unity3d
Multiplatform utveckling
Sök…
Compiler Definitioner
Compilerdefinitioner kör plattformsspecifik kod. Med dem kan du göra små skillnader mellan olika plattformar.
- Trigger Game Center-prestationer på apple-enheter och google play-prestationer på Android-enheter.
- Ändra ikonerna i menyerna (Windows-logotyp i Windows, Linux-pingvin i Linux).
- Har kanske plattformsspecifik mekanik beroende på plattformen.
- Och mycket mer...
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
}
En komplett lista med definitioner av enhetskompilerare kan hittas här
Organisera plattformsspecifika metoder för delklasser
Delklasser ger ett rent sätt att skilja kärnlogiken för dina skript från plattformspecifika metoder.
Delklasser och metoder är markerade med nyckelordet partial
. Detta signalerar kompilatorn att lämna klassen "öppen" och leta i andra filer för resten av implementeringen.
// ExampleClass.cs
using UnityEngine;
public partial class ExampleClass : MonoBehaviour
{
partial void PlatformSpecificMethod();
void OnEnable()
{
PlatformSpecificMethod();
}
}
Nu kan vi skapa filer för våra plattformsspecifika skript som implementerar den partiella metoden. Partiella metoder kan ha parametrar (även ref
) men måste återvända 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
Om en partiell metod inte implementeras kommer kompilatorn att utelämna samtalet.
Tips: Det här mönstret är användbart även när du skapar specifika metoder för redigerare.