我是Unity3D的新手,我已经完成了一些已经完成Java的项目,这些项目需要包含在我的Unity3D项目中。
我想在Unity3D项目中添加多个jar,但看起来jars在Unity项目中运行时它们之间没有任何依赖关系。
为此,
我尝试添加Assets / Plugins / Android文件夹中相关的所有jar(使用Android jar在文件夹中复制一些纯Java jar文件以调用jar的方法)
我尝试只创建一个jar文件(通过创建包含所有jar的Android项目)
通过这两种方法,我可以将我的项目构建为基于Android的,但是他们显示错误,说相关的库不存在
有什么方法可以将多个jar库用于Unity3D项目并依赖于其他jar?
换句话说,我想要这个结构
|主项目(团结)| --dependency - > | Jar lib 1 | --dependency - > | Jar lib 2 |
答案 0 :(得分:1)
有什么方法可以将多个jar库用于Unity3D项目 依赖于其他罐子?
否强>
如果您有许多相互依赖的jar库,则必须将它们合并为一个。是的,必须将罐子合并为一个,然后你可以建立一个Unity可以用来访问它们的桥梁。
Jar lib 1:库我需要直接调用方法
Jar lib 2:lib 1使用的库
在这种情况下,您必须在 Lib 1 中导入 Lib 2 。然后在 Lib 1 中创建调用Jar Lib 2 中的函数的函数。然后,您可以构建 Lib 1 和 Lib 2 。
在Eclipse中,项目 - > 全部构建。然后将它们导出到一个jar文件中。同样,在Eclipse中,文件 - > 导出... - > Java - > JAR文件 。然后,如果它们出现,则选择两个Lib。使用以下设置:
<强>爪哇:强>
//来自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
然后,您可以使用以下内容从getMagicRandomNumber()
拨打Lib1
功能
double adRand = androidFunction.Call<double>("getMagicRandomNumber");
从Lib2
中的桥接函数调用来自Lib1
的函数。
double adRand = androidFunction.Call<double>("getExtraMagicRandomNumber");
就是这样。这并不难,但这可能不编译,因为我直接输入到此编辑器。可能需要进行微小的修改。