android - tutorial - unity3d werbung




Unity3d-Integration mit Android (2)

Um Android vollständig zu unterstützen, müssen Sie keinen Code auf mittlerer Ebene für Java erstellen.

Stattdessen sollten Sie:

  1. Erstellen Sie ein Lib-Projekt unter Android SDK.
  2. 1 Hauptaktivität erstellen Erweitert UnityPlayerActivity
  3. Erstelle andere Aktivitäten, die du brauchst, und füge sie zu Manifest hinzu.
  4. Erstellen Sie Ressource, Layout ...
  5. Exportieren Sie in JAR und fügen Sie es in Unity hinzu, indem Sie die gesamte JAR-Ressourcendatei in den Ordner Assets / Plugins / Android kopieren.

Dieser Weg ist hilfreich, um Push-Benachrichtigungen, App-Rechnungen usw. zu schreiben.

Ref # hier: http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html (-> Erweitern des UnityPlayerActivity Java-Codes)

Und zusätzlich, indem Sie den folgenden Code verwenden:

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

Sie können die meisten magischen Dinge mit Android auf Unity tun

Hinweis *: yourFunctionName muss innerhalb Ihrer Hauptaktivität implementiert werden, die sich von UnityPlayerActivity erstreckt (siehe Schritt 2)

Grüße,

Ich muss eine Android-Anwendung erstellen, die aus Teilen besteht, die auf Unity3d (Animation usw.) und auf AndroidSDK geschrieben sind (mit androidSDK meine ich einige Aktivitäten, die in Java, Manifest und Ressourcen geschrieben sind)

In der Tat habe ich bereits diese Teile (Zumindest sind Mocks bereit =)) Und ich kann nicht herausfinden, wie man zwischen ihnen kommuniziert.

Ich habe viele Artikel über unity3d android integration gelesen (hauptsächlich über Dinge, die "plugins" genannt werden) und konnte nicht verstehen, wie dieses Team funktioniert = (Die Hauptsache, die ich verstanden habe (außer den offiziellen refs), ist die Dokumentation über Plugins ist sehr arm ... =)

Die einzige Art zu kommunizieren, die ich verstehen kann, ist eine Absicht (Broadcast) von Unity3D-Skript (mit AndroidJavaClass und AndroidJavaObject), so dass meine Aktivität (in Java geschrieben) damit umgehen kann. Aber etwas sagt mir, es ist nicht die beste Lösung ...

Was ich über das Problem gelesen habe, ist, dass ich JNI verwenden muss (was java native Schnittstelle ist - WARUM?!? - Warum muss ich nativen Code verwenden?)

Muss ich auf Java einen Code der mittleren Ebene erstellen, um mit meiner Java-Aktivität zu kommunizieren, sie mit AndroidNDK zu kompilieren und in mein Unity3d-Projekt als Plugin einzubinden? Wie kann ich diese mittlere Schicht schreiben als? Muss ich UnityPlayer anstelle von "Activity" als Basisklasse verwenden und warum?


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

Es gibt ein großartiges Tutorial zum Ausführen von Unity in Android Views . Sobald Sie dies eingerichtet haben, können Sie Szenen einfach überall in Ihrer App einbetten.

Wenn Sie von Unity aus die Java Android App aufrufen müssen, können Sie diesen Code hinzufügen:

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

Und dann können Sie jede gewünschte Methode für Ihre Aktivität über die Aktivität AndroidJavaObject aufrufen. Etwas wie das:

activity.Call("yourFunctionName", parameters);




unity3d