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