English
Digamos que queremos ejecutar una parte del codigo para cierta plataforma, muchas veces este problema ocurre cuando tenemos un proyecto multiplataforma que poseen caracteristicas distintas entre ellas.
Comunmente queremos hacer esto con los controles de usuario entre PC y Móviles.
void Update () {
if (Input.GetKey(KeyCode.D)) { //Mover a la derecha
rigidbody2D.velocity = new Vector2(speed, 0.0f);
}
else if (Input.GetKey(KeyCode.A)) { //Mover a la izquierda
rigidbody2D.velocity = new Vector2(-speed, 0.0f);
}
else { //No hay movimiento
rigidbody2D.velocity = new Vector2(0.0f, 0.0f);
}
}
En moviles esto no funciona.
Podemos agregar el codigo de la entrada por pantalla tactil abajo del codigo que tenemos pero esto hace que todo ese sea ejecutado sin importar si la plataforma lo soporta o no. Aqui es cuando usamos las
directivas especificas de plataforma.
void Update () {
#if UNITY_STANDALONE || UNITY_WEBGL || UNITY_EDITOR //PC
if (Input.GetKey(KeyCode.D)) { //Mover a la derecha
rigidbody2D.velocity = new Vector2(speed, 0.0f);
}
else if (Input.GetKey(KeyCode.A)) { //Mover a la izquierda
rigidbody2D.velocity = new Vector2(-speed, 0.0f);
}
else { //No hay movimiento
rigidbody2D.velocity = new Vector2(0.0f, 0.0f);
}
#elif UNITY_ANDROID || UNITY_IOS //Movil
if (Input.GetTouch(0).position.x > Screen.width / 2.0f) { //Mover a la derecha
rigidbody2D.velocity = new Vector2(speed, 0.0f);
}
else if (Input.GetTouch(0).position.x < Screen.width / 2.0f) { //Mover a la izquierda
rigidbody2D.velocity = new Vector2(-speed, 0.0f);
}
else { //No hay movimiento
rigidbody2D.velocity = new Vector2(0.0f, 0.0f);
}
#endif
}
Aqui definimos ciertas regiones de codigo que solo seran compiladas si la plataforma actualmente seleccionada es la misma que en
#if / #elif definidos.
Para mas informacion acerca de cual propiedad usar para cada plataforma puedes chequear la
tabla con todas las posibles propiedades.