Integrazione Unity3d con Android




unityplayeractivity extend (2)

Per supportare pienamente su Android, non è necessario creare un codice di livello medio su java.

Invece, dovresti:

  1. Crea un progetto Lib su Android SDK.
  2. Crea 1 attività principale Estende UnityPlayerActivity
  3. Crea altre attività di cui hai bisogno e aggiungile a Manifest.
  4. Crea risorse, layout ...
  5. Esportare in JAR e aggiungerlo in Unity copiando tutto JAR, file di risorse in cartella Assets / Plugins / Android.

In questo modo è utile scrivere notifiche push, nella fatturazione delle app, ecc ...

Rif. # Qui: http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html (-> Estensione del codice Java UnityPlayerActivity)

Inoltre, utilizzando il codice seguente:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("yourFunctionName", parameters);

Puoi fare la maggior parte delle cose magiche con Android su Unity

Nota *: yourFunctionName deve essere implementato all'interno dell'attività principale che si estende da UnityPlayerActivity (Guarda al passaggio 2)

Saluti,

Ho bisogno di creare un'applicazione Android composta da parti scritte su Unity3d (animazione e così via) e su AndroidSDK (per AndroidSDK intendo poche attività scritte in java, manifest e risorse)

In effetti ho già quelle parti (Almeno le finte sono pronte =)) E non riesco a capire come comunicare tra loro.

Ho letto molti articoli su unity3d android integration (principalmente su cose chiamate "plugins") e non sono riuscito a capire come funziona questo staff = (La cosa principale che ho capito (ognuno di questi ha risposto che i refs ufficiali hanno scritto a riguardo) è quella documentazione sui plugin è molto povero ... =)

L'unico modo per comunicare che riesco a capire è quello di creare un intento (trasmissione) da uno script unity3d (usando AndroidJavaClass e AndroidJavaObject), quindi la mia attività (scritta in java) può gestirlo. Ma qualcosa mi dice che non è la soluzione migliore ...

Quello che ho letto sul problema è che ho bisogno di usare JNI (che è l'interfaccia java nativa - PERCHÉ?!? - perché devo usare il codice nativo?)

Devo creare un codice di livello medio su Java che abbia lo scopo di comunicare con la mia attività java, compilarlo usando AndroidNDK e includerlo nel mio progetto Unity3d come plugin? Come posso scrivere quello medio strato di? Devo usare UnityPlayer invece di "Activity" come classe base e perché?


Here is a tutorial on the basics of running Unity inside of a normal Android app .

Esiste un ottimo tutorial sull'esecuzione di Unity all'interno di Android Views . Una volta installato e funzionante, puoi iniziare a incorporare le scene facilmente ovunque nella tua app.

Quando devi chiamare nell'app Android Java di Unity, puoi aggiungere questo codice:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

E poi puoi chiamare qualsiasi metodo che desideri sulla tua attività attraverso l'attività AndroidJavaObject. Qualcosa come questo:

activity.Call("yourFunctionName", parameters);






unity3d