Buscar..


Definiciones del compilador

Las definiciones del compilador ejecutan código específico de la plataforma. Usándolos puedes hacer pequeñas diferencias entre varias plataformas.

  • Activa los logros de Game Center en dispositivos Apple y Google Play en dispositivos Android.
  • Cambie los iconos en los menús (el logotipo de Windows en Windows, Linux Penguin en Linux).
  • Posiblemente disponemos de mecánica específica de la plataforma en función de la plataforma.
  • Y mucho más...
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

}

Una lista completa de las definiciones del compilador de Unity se puede encontrar aquí

Plataforma organizativa de métodos específicos para clases parciales.

Las clases parciales proporcionan una forma limpia de separar la lógica central de sus scripts de los métodos específicos de la plataforma.

Las clases y los métodos parciales están marcados con la palabra clave partial . Esto le indica al compilador que deje la clase "abierta" y busque en otros archivos el resto de la implementación.

// ExampleClass.cs
using UnityEngine;

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

    void OnEnable()
    {
        PlatformSpecificMethod();
    }
}

Ahora podemos crear archivos para los scripts específicos de nuestra plataforma que implementan el método parcial. Los métodos parciales pueden tener parámetros (también ref ) pero deben devolverse 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 no se implementa un método parcial, el compilador omitirá la llamada.

Consejo: Este patrón es útil al crear métodos específicos del Editor también.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow