前言
随着前两年元宇宙的提出,虚拟现实开始在各大平台大展身手。各个平台都开始搭上了元宇宙的列车,Unity作为虚拟引擎中的热门,渲染效果和开发效率极其出色;Android作为移动开发的巨头之一也搭上了元宇宙这趟列车。今天,小编带大家将Unity与Android这两把利剑结合起来,双剑合璧,大有所为。 大家做好位置,列车马上出发。
演示效果
Unity嵌入式开发
开发环境
Android端: Android Studio(各大版本都可以,区别不大)
Unity端: Unity3D(Unity2019及其以下 向下兼容)
这里小编不推荐大家用Unity3D 2020及其以上版本开发,因为这是Unity打包方式 Mono 和 IL2CPP 之间的差异,这里不详细说明,想了解的可以私聊我
一 .创建Unity项目并打包
1.创建Unity项目
建议大家Unity的项目名和Android项目名尽量相同
2. Unity构建打包配置
创建Unity项目后,不对Unity场景做任何操作,我们只调整打包平台
点击左上角 File ——> 点击Build Settings ——> 点击Add Open Scenes ——> 点击Android ——>勾选Export Project ——> 点击Switch Platform
下图是点击Switch Platform后的窗口样子,大家可以对比一下
3. Android环境相关配置
打包Android相关的东西都是要配置好Java环境,配置好AndroidSDK,再使用Gradle等工具进行构建,Unity也不例外
3.1. 点击Unity左上角Edit ——>Preferences,弹出如下图
如果你下载Unity没有什么问题的话,JDK ,AndroidSDK,Android NDK ,Gradle这些路径按照默认的设置
小编建议大家自定义去选择和Android Studio配置一样的路径,这样可以Android Studio和Unity使用的配置都一样,可以减少很多不必要的版本差异问题
3.2. 点击Unity左上角Edit ——> 点击Project Settings ,弹出窗口如下
点击Player ——> 点击Other Settings,操作如下图所示
4. 导出Unity项目文件
点击左上角File ——> Build Settings ——> Export
打包进度条结束后,弹出文件夹如下
如果打包出来的项目和上图不一致,那可能是打包形式不同或者Unity版本差异大,到此为止,Unity打包出来的Android项目就完成了,接下来小编带大家将此项目嵌入Android Studio中
二. 将Unity嵌入Android中开发
1. 创建Android项目
项目名尽量和Unity项目名保持一致,不一致也可以,到时候Unity改一下包名即可,创建完成后,先不要写Android代码
2. 找到Unity打包出的项目,把Unity项目中libs文件夹下的jar包放入到Android项目中的libs文件夹中
3. 将Unity项目中的 assets文件夹和 jniLibs文件夹放入到Android项目的main文件夹目录下
4. 将Unity文件夹中的UnityPlayerActivity.java 放置到Android项目中 和MainActivity.java 同级
到此为止,我们就将Unity项目嵌入到了Android项目中了,接下来跟紧小编,小编带大家在Android项目配置一下Unity项目
三. 在Android项目中配置Unity项目
1. 将jar包解压,找到UnityPlayerActivity这个类,在清单文件中声明,这个类是从Unity项目加入过来的,打开这个类,修改包名
包名和Android项目包名一致,,修改完包名后,会发现好几处报错,分别找到报错的地方,按下Alt + Enter ,选择import class 如下图所示:
2. 在Android项目中添加字符串引用
为什么要添加这个呢?这是因为Unity项目中默认引用了这个字符串,如果不添加上去,Unity程序会找不到这个字符串,从而引发Unity程序启动就立马闪退,如下图:
3. 在build gradle中添加ndk
到此为止,我们就将Unity项目在Android中配置好了,接下来跟紧小编,小编带大家走向最后一步,直接上代码
四. 在Android中启动Unity
演示效果
Unity嵌入式开发
到此为止,小编就带大家继承好了Unity,这是Android搭上元宇宙快车的第一步
下一篇小编带大家实现双端通信(Unity端 与 Android端)
有任何疑问可以在评论区提出,小编每周六周日都会耐心的一一解答,也可以私信小编,添加小编的联系方式,大家一起探讨
要是有疑问大家可以加我微信详聊 yf1553653788