在AndroidStudio中嵌入Unity项目的方法

在原生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:
将:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

这段删除掉。

至此,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节点,如下:

<activity android:name=".MyARActivity"
    android:process=":neobearAR"
    >
</activity>

10. 在MainActivity.java中加入事件响应的过程:

Button arButton = (Button)findViewById(R.id.startBtn);
arButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    startActivity(new Intent(getApplicationContext(), MyARActivity.class));
  }
});

11.编译,运行。

发布了1 篇原创文章 · 获赞 1 · 访问量 130

猜你喜欢

转载自blog.csdn.net/u010746170/article/details/105686518
今日推荐