在 Unity 的 Android Studio 上使用 类

Using classes on Android Studio in Unity

我在 Android Studio(接收恒定数据流的蓝牙服务器套接字)上创建了一个项目,我想知道是否可以将其转换为可在 Unity 上使用的 .dll? Unity 使用 Javascript 但代码在 Java 中,但我知道 Java 可以嵌入到 JavaScript 中,如果我将它设为库。我做了很多研究并使用 gradle 导出 .jar 文件然后我读到我可以使用 IKVM 将 .jar 转换为 .dll,但有人说 IKVM 不能使用android 个项目?这是真的?如果是这样,有没有办法在 Unity 上使用 class?

此外 JavaScript Unity 3d 还支持 C# 看看这里也许有帮助...

http://answers.unity3d.com/questions/330809/integration-of-jar-file-using-jni.html

我不担心创建一个 dll,一个 jar 就足够了。

最终目标是生成 your_plugin.jar 文件,并将其移动到 Assets/Plugins/Android/your_plugin.jar。然后你可以通过 JNI 使用 C#(或者 Javascript)访问它。

我建议遵循 this 教程。

要点是,在您的 jar 文件中,您扩展默认的 UnityPlayerActivity 并创建您需要的任何方法。我将从简单的 returns 字符串开始。生成jar文件,放入Assets/Plugins/Android。在同一目录中创建一个 AndroidManifest.xml,这会导致 Unity 使用您的扩展 Activity 而不是默认值启动。在 Unity 端,获取对您扩展的 activity 当前实例的引用,并调用您的方法,如下所示:

  // 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");