unity android整合
1、新建1个unity项目
(1)加1个物体 改名 android
(2)挂载1个脚本,在start方法内调用android方法
AndroidJavaClass jc = new AndroidJavaClass("com.ngt.demo.UnityPlayerActivity");
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
string[] args = new string[2];
args[0] = "a";
args[1] = "b";
activity.Call("testMethod0", args);
添加1个让android调用的方法
public void testMethod1()
{
print("testMethod1 in unity");
}
(3) 设置包名 build setting-player setting
com.ngt.demo
(4) export android项目
导出完毕后,复制1份工程,尝试用android studio (import project)运行看看
2、新建1个android项目
包名要一致 com.ngt.demo
运行试试
3、复制unity项目文件
(1)jar
将unity导出的Jar包(libs文件夹下)导入到AS项目中libs下,选中jar包右键点击选择Add as Library
(2)assets
将src/main下的assets文件夹整体导入到AS项目src/main目录下
(3)jniLibs
将src/main下的jniLibs文件夹整体导入AS项目src/main目录下。
(4)java文件夹
使用src/main下的java文件夹替换AS项目src/main目录下 java文件夹(如果AS项目已集成第三方SDK,也可以直接把Unity侧java文件夹下脚本直接添加到AS侧java下,前提是两侧包名一致,然后在unity的java脚本里的Oncreate里初始化SDK)。
(5)AndroidManifest
重新配置AS项目中src/main下的AndroidManifest.xml
只改activity的名字
<activity android:name=".UnityPlayerActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
(6)strings.xml
unity导出的src/main/res/Value下的strings.xml中复制一句代码到AS中src/main/res/Value下的strings.xml
(7)android UnityPlayerActivity
定义currentActivity
public static UnityPlayerActivity currentActivity=null;
在onCreate方法内 最后
currentActivity=this;
增加1个方法
public void testMethod0(){
System.out.println("testMethod0");
UnityPlayer.UnitySendMessage("android", "testMethod1", "");
}
(8)build试试--遇到白屏闪退
build.gradle(moudle 注意该文件有两个) 在defaultConfig内
加入
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
}
本文地址:https://blog.csdn.net/frankxixu/article/details/111843919