lunes, 28 de abril de 2014

Unity3D Scripting: Unity3D dentro de Android (I)

Hay dos maneras de interactuar con Android nativo desde Unity3D, podemos exportar el proyecto a un proyecto de Android y desarrollar nuestra aplicación nativa la cual podrá llamar a Unity3D, o bien a través de una librería ya compilada en Java, la cual podremos usar desde Unity3D.
Hoy aprenderemos la primera de las dos formas, comunicarnos con Unity3D desde nuestra aplicación nativa de android.

En primer lugar, vamos a tener un objeto que va a contener este script en Unity3D que contendrá llamadas a funciones que retornan ciertos tipos de datos o directamente recoger variables.

public class NativeValues : MonoBehaviour {
 
 #if UNITY_ANDROID && !UNITY_EDITOR
  private static AndroidJavaObject jo;
  //Creamos nuestro objeto de java
  void Awake()
  {
   jo = new AndroidJavaObject("com.hagamosvideojuegos.Ejemplo");
  }
  //Recogemos el valor de tipo float del nombre que le pasamos como parámetro
  public float getFloatValue(string variable)
  {
   return jo.Get(variable);
  }
  //Editamos el valod de tipo float de la variable que le pasamos como parámetro
  public void setFloatValue(string variable, float valor)
  {
   jo.Set(variable, valor);
  }
  //Llamamos a un método que no devuelve nada
  public void voidMethod(string metodo)
  {
   jo.Call(metodo);
  }
  //Llamamos a un método que no devuelve nada y le pasamos un parámetro
  public void voidMethod(string metodo, float value)
  {
   jo.Call(metodo, value);
  }
  //Llamamos a un método que devuelve un float
  public float floatMethod(string metodo)
  {
   return jo.Call(metodo);
  }
 #endif
}
En principio vamos a destacar algo importante que cada uno usaremos a nuestro gusto, esto que especifíco en negrita es el nombre del paquete donde estará la clase de la que estamos creando un objeto de java donde com.hagamosvideojuegos es el paquete y Ejemplo la clase como podemos observar aquí

void Awake()
{
 jo = new AndroidJavaObject("com.hagamosvideojuegos.Ejemplo");
}
Y por último ver como vamos a acceder a nuestras propiedades y métodos públicos de nuestro objeto java desde Unity3D.

jo.Get(variable); //Le pasamos el nombre de la variable java que queremos leer
jo.Call(metodo); //Le pasamos el nombre del método java que queremos ejecutar
jo.Call(metodo, value); //Le pasamos el nombre del método java que queremos ejecutar pasándole un parámetro

 Una vez tengamos nuestro objeto con esta clase que, para evitar errores, solo se compilará solo en Android.

Una vez que tengamos nuestra aplicación de prueba, antes de compilar seleccionaremos Google Android Proyect y por último nos dará solo la opción de exportar.

En la próxima parte explicaré los pasos en eclipse para crear nuestro código necesario para interactuar con Unity3D.

No hay comentarios:

Publicar un comentario