2016-07-06 10 views
1

habe ich ein Projekt auf Android Studio (Bluetooth Server-Socket, die einen konstanten Strom von Daten empfangen) und ich frage mich, ob es möglich war, sie in eine DLL zu drehen, dass ich für die Einheit verwenden kann ? Unity verwendet Javascript, aber der Code ist in Java, aber ich verstehe, dass Java in JavaScript eingebettet werden kann, wenn ich es zu einer Bibliothek mache. Ich habe eine ordentliche Menge an Nachforschungen angestellt und mit dem Gradle eine .jar-Datei exportiert und dann gelesen, dass ich mit IKVM ein .jar in eine .dll umwandeln kann, aber jemand hat gesagt, dass IKVM nicht für Android-Projekte verwendet werden kann? Ist das wahr? Und wenn ja, gibt es eine Möglichkeit, dass ich die Klasse für Unity verwenden kann?Mit Klassen auf Android Studio in Unity

Antwort

0

ich nicht über die Schaffung einer dll Sorge wäre, ist ein Glas ausreichend.

Das Endziel ist your_plugin.jar Datei zu erzeugen und zu Assets/Plugins/Android/your_plugin.jar zu bewegen. Dann können Sie mit C# (oder vielleicht Javascript) über das JNI darauf zugreifen.

Ich schlage vor, folgende this Tutorial.

Der jist wird, in Ihrer JAR-Datei, erweitern Sie den Standard UnityPlayerActivity und schaffen, was Methoden, die Sie benötigen. Ich würde mit etwas Einfachem beginnen, das nur eine Zeichenfolge zurückgibt. Generieren Sie die JAR-Datei und legen Sie sie in Assets/Plugins/Android. Erstellen Sie eine AndroidManifest.xml im selben Verzeichnis, wodurch Unity mit Ihrer erweiterten Aktivität statt mit dem Standard gestartet wird. Rufen Sie auf der Unity-Seite einen Verweis auf die aktuelle Instanz der Aktivität ab, die Sie erweitert haben, und rufen Sie Ihre Methode wie folgt auf:

// get a reference to the class 
    AndroidJavaClass unity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); 

    // get a reference to the class instance from a static variable 
    AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject> ("currentActivity"); 

    // call a method in your UnityPlayer class that returns a string 
    String s = currentActivity.Call<string>("myJavaMethodReturningString"); 
Verwandte Themen