Поиск…


Определения компилятора

Определения компилятора используют код конкретной платформы. Используя их, вы можете делать небольшие различия между различными платформами.

  • Достижения Trigger Game Center на устройствах Apple и достижения Google Play на устройствах Android.
  • Измените значки в меню (логотип Windows в Windows, Linux penguin в Linux).
  • Возможно, в зависимости от платформы возможно наличие специфичной для платформы механики.
  • И многое другое...
void Update(){ 

#if UNITY_IPHONE
    //code here is only called when running on iPhone
#endif

#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
    //code here is only ran in a unity game running on windows outside of the editor
#endif

//other code that will be ran regardless of platform

}

Полный список определений компилятора Unity можно найти здесь

Организация специальных методов платформы для частичных классов

Частичные классы обеспечивают чистый способ отделить основную логику ваших скриптов от конкретных методов платформы.

Частичные классы и методы отмечены ключевым словом partial . Это сигнализирует компилятору оставить класс «открытым» и посмотреть в других файлах для остальной части реализации.

// ExampleClass.cs
using UnityEngine;

public partial class ExampleClass : MonoBehaviour
{
    partial void PlatformSpecificMethod();

    void OnEnable()
    {
        PlatformSpecificMethod();
    }
}

Теперь мы можем создавать файлы для наших скриптов, специфичных для платформы, которые реализуют частичный метод. Частичные методы могут иметь параметры (также ref ), но должны возвращать void .

// ExampleClass.Iphone.cs

#if UNITY_IPHONE
using UnityEngine;

public partial class ExampleClass
{
    partial void PlatformSpecificMethod()
    {
        Debug.Log("I am an iPhone");
    }
}
#endif
// ExampleClass.Android.cs

#if UNITY_ANDROID
using UnityEngine;

public partial class ExampleClass
{
    partial void PlatformSpecificMethod()
    {
        Debug.Log("I am an Android");
    }
}
#endif

Если частичный метод не реализован, компилятор опустит вызов.

Совет. Этот шаблон полезен при создании специальных методов редактора.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow