前言
上一篇给大家分享了Android集成Unity,但那一篇解决的是Unity采用mono打包,但Unity到了2020及以上版本时,官方都是推荐il2cpp打包,所以这一篇就补上之前那一篇的短板
演示效果
Android与Unity页面反复切换,无闪退
开发环境
Android端: Android Studio(各大版本都可以,区别不大)
Unity端: Unity3D(各大版本都可以,区别不大)
一. 创建Unity项目并打包
1. 创建Unity项目

2. Unity构建项目配置
创建Unity项目后,先不对Unity场景做任何操作,调整打包平台除外
点击左上角 File ------> 点击Build Settings ------> 点击Add Open Scenes ------> 点击Android ------>勾选Export Project ------> 点击Switch Platform

3. Android环境相关配置
打包Android相关的东西都是要配置好Java环境,配置好AndroidSDK,再使用Gradle工具进行构建,Unity也不例外
3.1 点击Unity左上角Edit------>Preferences,弹出如下图

如果你下载Unity没有问题的话,JDK,Android SDK,Android NDK,Gradle这些路径按照默认的设置
小编建议大家下载Unity时SDK尽量和Android Studio的SDK版本一致,这样可以减少很多不必要的版本差异问题
3.2.1 点击Unity左上角Edit------>点击Project Settings,弹出窗口如下:

3.2.2 点击Player------>点击Other Settings,操作如下图:

4. 导出Unity项目文件
点击左上角File------> Build Settings------> Export

打包进度条结束后,弹出如下文件夹

如果打包出来的Android项目和上图不一致,那可能是打包平台不同或者Unity的版本差异较大,到此为止,Unity打包出来的Android项目就完成了,接下来小编带大家将Unity项目嵌入到Android Studio中
二. 将Unity集成到Android中开发
1. Android Studio打开Unity项目
用Android Studio打开刚刚导出的Unity项目,操作如下:

接下来便弹出弹窗

然后再弹出一个弹窗

2. Android Studio调整环境配置
对了,突然想起,文件名尽量不取中文,所以我改了个名字TextDemo(Unity打包项目 改为 TextDemo)
如下图所示,可以看到Android Studio打开刚刚的Unity项目后出现了报错,没事,这是因为Unity与Android Studio配置的差异,我们只需增加一行设置即可

3. 调整Unity项目配置
在Android API 31以上,Manifest中需要显示声明Launcher Activity的Android:exported属性

4. Unity项目编译成aar

接下来如下图操作:

5. Android集成Unity
新建一个Android项目,项目名随意,不影响,将上一个编译出来的aar放入到此项目的lib中,如图所示:

修改AndroidManifest,如下图所示:

添加字符串配置,如图所示:

在build.setting修改一下引用,如下图所示:

到此为止,Android集成Unity就结束了,然后就可以跑在真机上运行了,记住一定要跑真机哦,因为刚刚我们在Unity打包时没有勾选模拟器
注意事项
Unity 页面必须使用单独进程,否则在退出时,程序会崩溃,因为Unity退出时会杀死Android进程
java
android:process=":unity"
要是有疑问大家可以加我微信详聊 yf1553653788,下一篇再给大家分享 Flutter与Unity之间的通信;