UM3L6——Android中嵌入Unity内容
UM3L6——Android中嵌入Unity内容
Android中嵌入Unity内容
在进行 Android 开发时,可能会有需求显示 Unity 开发的 3D 内容,一开始我们启动的是 Android 应用程序中的 Activity
通过 Activity 我们想要打开 Unity 开发的内容进行展示,这就是 Android 中嵌入 Unity 内容的意思
注意:
Android 中嵌入 Unity存在限制问题,退出 Unity 所在的 Activity 会退出整个 App,不能达到我们想要的需求
所以如果存在 Android 和 Unity 混合开发的情况,建议采用上节课的Unity中嵌入Android 的方式,本节课内容主要做为拓展知识
新建Unity测试项目
-
在该项目中添加一些测试内容,比如方块旋转
1
2
3
4
5
6
7
8
9using UnityEngine;
public class Test : MonoBehaviour
{
void Update()
{
this.transform.Rotate(Vector3.up * 20 * Time.deltaTime);
}
} -
将该项目发布为Android工程
新建Android测试项目
-
新建一个Android工程
-
将知识点二中导出内容中的 unityLibrary 文件夹拷贝到Android工程中

-
将知识点二中导出内容中的 launcher 文件夹中的 res 中的内容拷贝到 unityLibrary 文件夹中合并(遇到同名文件请跳过)

-
修改安卓工程中的 settings.gradle 文件,在最后添加
include ':unityLibrary' 并 点击右上角同步(Sync now)
-
修改安卓工程中的 gradle.properties 文件,
在最后添加unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
并点击右上角再次同步(try again)
-
修改安卓工程中 app 文件夹中的 build.gradle 文件,在依赖项中 添加
implementation project(':unityLibrary')
-
在主Activity中添加一个用于跳转的按钮,并为该按钮添加监听事件,用于打开Unity的Activity
布置界面:

在
MainActivity为按钮添加监听方法并实现切换到Unity的Activity的逻辑1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24package com.taikr.androidproject;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到btnUnity按钮,并为其添加按下监听方法
findViewById(R.id.btnUnity).setOnClickListener(view -> {
//打开Unity的Activity
Intent intent = new Intent(this, UnityPlayerActivity.class);
startActivity(intent);
});
}
} -
修改两个 AndroidManifest.xml 文件,让主Activity的作为主Activity,删除Unity相关Activity的设置

打包测试
设置密钥,进行打包,用模拟器或者真机进行测试,显示效果如下:


左:进入应用显示;右:点击中间按钮显示
