七月 30.2018.
0 Comment
在原生android项目中嵌入unity是一个十分普遍的需求,特别是当要在android App中加入一些原生android不易实现的功能,如加载比较复杂的3d模型,显示复杂的动画,开启摄像头实现AR功能(实现AR本身不难,难的是处理各种复杂的模型与动画,原生代码借助三方库也挺繁琐)等。
在AndroidStudio中集成步骤如下:(基于Unity2018测试)
1. 从unity中导出基于gradle编译的Android Studio(以下简称AS)工程。
2. 进入导出的gradle工程目录,编辑文件build.gradle:
(1) apply plugin: ‘com.android.application’改为:
apply plugin: ‘com.android.library’
(2) 去除applicationId ‘com.x.y’,其中’com.x.y’是你项目的package id。
3. 再进入gradle工程的src/main目录,修改AndroidManifest.xml:
将:
这段删除掉。
至此,Unity导出工程这边的修改完成。进入AS这边。
4. 在AS中新建一个测试工程(下称:主工程),然后通过File|New|Import Module…导入前面制作好的AS module。
5. 在主工程中打开AndroidManifest.xml文件,作如下修改:
(1) 在Manifest根节点添加一个属性:
xmlns:tools = "http://schemas.android.com/tools"
(2) 在Application节点添加一个属性:
tools:replace="android:icon, android:theme"
6. 选中主工程,点击右键,单击”Open Module Settings”,进入Module设置界面,依照下面设置:
先切换到Dependencies页签,点击右边的+号,在弹出的下拉菜单中选择最后一个3 Module Dependency,然后选中我们前面导入的步骤1-3中做好的unity导出的module,这样让主工程依赖导入的module。
7. 新建一个从com.unity3d.player.UnityPlayerActivity继承的的Activity类,如:
import com.unity3d.player.UnityPlayerActivity;
public class MyARActivity extends UnityPlayerActivity {
}
8. 在主工程的AndroidManifest.xml中添加一个Activity节点,如下:
android:process=":neobearAR"
>
9. 在activty_main.xml中加入一个Button,设定Button的id为arBtn:
10. 在MainActivity.java中加入事件响应的过程:
Button arButton = (Button)findViewById(R.id.arBtn);
arButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), MyARActivity.class));
}
});
11. 编译。若碰到编译错误,可以将Test工程都删除掉,然后在build.gradle中修改这些配置,使整个工程中统一:
compileSdkVersion 28
buildToolsVersion '27.0.2'
minSdkVersion16
targetSdkVersion 28
12. 运行。若原unity工程中集成了其他一些sdk,如做AR应用可能会集成EasyAR,这时,需要在原unity工程中将license key对应的package id改成主工程的id,然后替换一下license key,之后重新导出AS工程,注意,更新到主工程时,可以只更新assets目录下的内容。
13. 以下是我测试的运行图:
Enjoy!
打赏
微信扫一扫,打赏作者吧~