studio - Integración de Unity3d con Android
unity c++ plugin (2)
Necesito crear una aplicación para Android que consta de partes escritas en Unity3d (animación, etc.) y en AndroidSDK (por androidSDK me refiero a algunas actividades escritas en Java, manifiesto y recursos)
De hecho, ya tengo esas partes (al menos los simulacros están listos =)) Y no puedo entender cómo comunicarme entre ellos.
He leído muchos artículos sobre la integración de Android en unity3d (principalmente sobre cosas llamadas "complementos") y no entendí cómo funciona este personal = (Lo principal que entendí (todo el mundo exceptúa que los refs oficiales escribieron sobre eso) es esa documentación sobre complementos es muy pobre ... =)
La única forma de comunicar lo que puedo entender es hacer una intención (transmisión) desde el script unity3d (usando AndroidJavaClass y AndroidJavaObject) para que mi actividad (escrita en java) pueda manejarlo. Pero algo me dice que no es la mejor solución ...
Lo que leí sobre el problema es que necesito usar JNI (que es la interfaz nativa de Java, ¿POR QUÉ?!? ¿Por qué necesito usar código nativo?)
¿Necesito crear algún código de nivel medio en java cuyo propósito sea comunicarme con mi actividad java, compilarlo usando AndroidNDK e incluirlo en mi proyecto de Unity3d como un complemento? ¿Cómo puedo escribir esa capa intermedia que? ¿Debo usar UnityPlayer en lugar de "Activity" como clase base y por qué?
Para un soporte completo en Android, no es necesario crear un código de nivel medio en Java.
En cambio, debes:
- Crea un Proyecto Lib en Android SDK.
- Crear 1 actividad principal Extiende UnityPlayerActivity
- Crea otras actividades que necesites y añádelas a Manifiesto.
- Crear recurso, diseño ...
- Exporte a JAR y agréguelo a Unity copiando todo JAR, archivo de recursos en la carpeta Activos / Complementos / Android.
De esta manera es útil para escribir notificaciones Push, en facturación de aplicaciones, etc.
Ref # aquí: http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html (-> Extendiendo el Código Java UnityPlayerActivity)
Y además, al usar el siguiente código:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("yourFunctionName", parameters);
Puedes hacer la mayoría de las cosas mágicas con Android en Unity
Nota *: yourFunctionName debe implementarse dentro de su actividad principal, que se extiende desde UnityPlayerActivity (Vea el paso 2)
Saludos,
Here is a tutorial on the basics of running Unity inside of a normal Android app .
Hay un gran tutorial sobre cómo ejecutar Unity dentro de Android Views . Una vez que lo ejecute, puede comenzar a incrustar escenas fácilmente en cualquier lugar de su aplicación.
Cuando necesite llamar a la aplicación Java de Unity, puede agregar este código:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
Y luego puede llamar a cualquier método que desee en su actividad a través de la actividad AndroidJavaObject. Algo como esto:
activity.Call("yourFunctionName", parameters);