在Unity中使用Android Studio上的类

时间:2016-07-06 21:27:02

标签: javascript java android-studio unity3d cross-platform

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

2 个答案:

答案 0 :(得分:0)

除了JavaScript Unity 3d还支持者C# 看看这里也许有帮助...

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

答案 1 :(得分:0)

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

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

我建议关注this教程。

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

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