【问题标题】:How to import '.jar' library file into Unity?如何将“.jar”库文件导入 Unity?
【发布时间】:2015-12-31 12:16:25
【问题描述】:

如何将.jar 文件导入Unity3D?我使用的是 Windows 平台,而不是 Android、iOS、Mac 等。我将 .jar 文件放入 Assets/Plugins/x86。我不明白如何在.jar 库中调用我的函数。

我在这里没有找到任何适用于 Windows 的东西:http://docs.unity3d.com/Manual/Plugins.html

谢谢。

【问题讨论】:

  • Jar 文件用于 Java。 Unity 也基于带有原生插件的 .NET——据我所知,没有 Java 支持。
  • 但是,它支持 Android java 插件,不支持 Windows。我不明白...
  • 使用 JD_GUI 工具查看这个 jar 包含哪些 java 类。如果是Android,可以使用AndroidJavaClass和AndroidJavaObject类。
  • 嗯,Android 上的 Unity 支持 Java 插件似乎并不奇怪......
  • 它不适用于安卓。对于 Windows。我不需要JD_GUI,因为它的矿库。

标签: java unity3d jar import


【解决方案1】:

据我所知,在 Windows 平台上的 Unity 中,您没有对此的内置支持,但使用 ikvm 将 Java 字节码转换为 .NET 很容易。它带有一个名为 ikvmc 的转换器,因此您可以简单地使用:

ikvmc your.jar -target:library ==> add -target:library to generate dll

它将您的 jar 转换为 your.dll,这是您用 .NET dll 重写的 Java 代码。然后,您只需将它放在您的资产文件夹中即可使用它,就好像它是本机 .NET 库一样使用它。例如,如果您的 java 代码是:

public class HelloWorld {
    public static void hello() {
        System.out.println("Hello, World");
    }
}

您只需HelloWorld.hello()即可使用它

【讨论】:

  • 谢谢,我会尽快测试。 :)
  • 如何使用我的 dll ?在我这样的dll函数中; public static boolean Test1(int N) public static String Test2()
  • 所以您只需致电YourClass.Test1(10),查看我的回答的更新
  • 谢谢,我没有尝试,但为什么不使用 DLLIMPORT 和 extern void?
  • 因为只需要从 .NET 代码导入非托管(不是 .NET)库,但您使用 ikvmc 创建的库是 .NET 托管库。有关托管插件的更多信息,请参见此处:docs.unity3d.com/Manual/UsingDLL.html
【解决方案2】:

如果你想直接在unity中添加jar文件

示例类文件如下,编译成jar

package xxx;
    import android.util.Log;
    public class Helper {
    public static void testAndroid()
        {
        Log.i(“Unity”, “test android”);
        }
    }

将jar文件统一放在plugins->Android中,并在插件编辑器中检查android平台。请注意,如果您使用的是 android 引用,它只会在 android 设备或模拟器上运行

创建一个新的 MonoBehaviour 脚本 TestAndroidPlugin.cs,并将其附加到相机:

public class TestAndroidPlugin : MonoBehaviour {    
    void Start () {
        Debug.Log("Android function is to be called");


        var ajc = new AndroidJavaClass("xxx.Helper"); //(1)
        ajc.CallStatic("testAndroid");                                       //(2)
        Debug.Log("Androidtion is called");  
    }
}

【讨论】:

    【解决方案3】:

    据我所知,Unity 不支持 Windows 开发的 jar 库,因为支持的编程语言是

    UnityScript(用于统一的 JavaScript)、boo 和 C#。

    您可以在此处查看文档 unity supported programming language 即使他们放弃了对统一 5.0 中的预订的支持,但您可以使用它。 为什么不寻找一个可以解决您想要解决的相同问题的 c# 库而不是 jar 库

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 2021-11-08
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多