有什么办法可以在Unity3D项目中使用多个jar库
依赖于其他 jars?
否。
如果您有许多相互依赖的 jar 库,则必须将它们合并为一个。是的,这些 jar 必须合并为一个,然后您可以制作一个 Unity 可以用来访问它们的桥。
Jar lib 1: Library 我需要直接调用方法
Jar lib 2:lib 1 使用的库
在这种情况下,您必须在 Lib 1 中导入 Lib 2。然后在 Lib 1 中创建调用 Jar Lib 2 中的函数的函数。然后,您可以构建 Lib 1 和 Lib 2。
在 Eclipse 中,项目->全部构建。然后将它们都导出到一个 jar 文件中。同样,在 Eclipse 中,File->Export...->Java->JAR 文件。接下来,如果它们出现,则选择两个 Lib。使用以下设置:
Java:
//来自 Lib/Jar 2 的东西(假设这是其中的函数代码)
public class Lib2{
public static Lib2 instance = new Lib2();
public double getRandomNumber() {
double advancedRandomNumber = 5;
return advancedRandomNumber;
}
}
//来自 Lib/Jar 1 (com.roxy.app) 包的东西(假设这是其中的函数代码)
public class Lib1{
public static Lib1 instance = new Lib1();
public double getMagicRandomNumber() {
double advancedRandomNumber = 15;
return advancedRandomNumber;
}
//Bridge to access Stuff from jar 2
public double getExtraMagicRandomNumber()
{
return Lib2.instance.getRandomNumber();
}
}
C#:
private AndroidJavaClass androidClass;
private AndroidJavaObject androidFunction;
#if UNITY_ANDROID
if (androidClass == null || androidFunction == null)
{
androidClass = new AndroidJavaClass("com.roxy.app.Lib1");
androidFunction = androidClass.GetStatic<AndroidJavaObject>("instance");
}
#endif
然后你可以从Lib1调用getMagicRandomNumber()函数:
double adRand = androidFunction.Call<double>("getMagicRandomNumber");
并从Lib1 中的桥接函数调用Lib2 的函数。
double adRand = androidFunction.Call<double>("getExtraMagicRandomNumber");
就是这样。这并不难,但这可能不编译,因为我直接将它输入到这个编辑器。可能需要稍作修改。