unity3d
Développement multiplateforme
Recherche…
Définitions du compilateur
Les définitions du compilateur exécutent un code spécifique à la plate-forme. En les utilisant, vous pouvez faire de petites différences entre les différentes plates-formes.
- Déclenchez les réalisations de Game Center sur les appareils Apple et les performances de Google Play sur les appareils Android.
- Changer les icônes dans les menus (logo Windows dans Windows, Linux pingouin dans Linux).
- Possiblement avoir une mécanique spécifique à la plate-forme en fonction de la plate-forme.
- Et beaucoup plus...
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
}
Une liste complète des définitions du compilateur Unity peut être trouvée ici
Organisation des méthodes spécifiques de la plate-forme aux classes partielles
Les classes partielles permettent de séparer la logique de base de vos scripts des méthodes spécifiques à la plate-forme.
Les classes et méthodes partielles sont marquées avec le mot-clé partial
. Cela signale au compilateur de laisser la classe "open" et de regarder dans les autres fichiers pour le reste de l'implémentation.
// ExampleClass.cs
using UnityEngine;
public partial class ExampleClass : MonoBehaviour
{
partial void PlatformSpecificMethod();
void OnEnable()
{
PlatformSpecificMethod();
}
}
Nous pouvons maintenant créer des fichiers pour nos scripts spécifiques à la plate-forme qui implémentent la méthode partielle. Les méthodes partielles peuvent avoir des paramètres (également ref
) mais doivent renvoyer 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
Si une méthode partielle n'est pas implémentée, le compilateur omettra l'appel.
Astuce: Ce modèle est utile lors de la création de méthodes spécifiques à l'éditeur.