赞
踩
最近需要在安卓程序中嵌入Unity 3D作为Motion Capture的原型展示。中文搜索到的教程要么太老,要么有问题,甚至是误导。在中英文引擎并用之后,成功实现了嵌入,所以写一篇实践成功的记录,希望对大家有用吧。
Unity:2019.2.17f1(通过Unity Hub 安装 安卓插件,实现安卓项目编译)
Android Studio:3.6.1
Android API:28(安卓9.0)
NDK:安卓编译需要,如果没有安装,AS会自动安装需要的版本
我加载了一个简单的人物模型,如下:
在File->Building Setting 中进行设置,如下图
打开 Player Settings
主要注意三个地方:1、设置一些基本信息;2、设置包名和API级别,都和安卓程序一致就行;3、设置为Momo,然后CPU构架选 ARMv7 和 x86。
如上设置,选择 Build and Run,保存APK,Unity会生成包,并且在连接的调试手机上运行,效果如下:
Unity 成功运行了安卓程序。
如上,勾选两个选项,进行输出,得到目录如下:
接下来我们用其中的一些资源,既可以集成到安卓中去。
略过~~~
在资源的libs目录下,将unity-classes复制到安卓目录下的app-libs下面,如下图
然后,选中,右键,add as library,编译,通过。
Unity资源的目录下面,src,main下面两个文件夹:assets和jinLibs直接复制到安卓目录的app.src.main目录下面,如下图
把UnityPlayerActivity 复制到 MainActivity同一级目录里面,如下图:
到此处,我们的资源合并工作已经完成了,Android Studio中已经有了所需资源。项目编译也没有问题。
直接将UnityPlayerActivity当初启动页面,在AndroidManifest.xml中更改
改成UnityPlayerActivity,直接启动Unity
这一步基本上所有中文教程都没写,基本上到上面为止,这时我们可以编译通过,也可以在手机上run,但是会直接闪退。提示:
Unity: Failed to load 'libmain.so', the application will terminate。
在stack overflow 上找到了相关的问题,需要做两步配置
a.在 string.xml中加入 :
<string name="game_view_content_description">Game view</string>
如下:
b. 在build.gradle中加入
- defaultConfig {
- ndk {
- abiFilters 'armeabi-v7a', 'x86'
- }
- }
如下,定义了ndk的构架:
至此,我们完成了Unity的安卓集成,编译 run,效果如下:
Unity嵌入了安卓,接下来可以做更多的操作了~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。