| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Unity工程导入Android工程 -> 正文阅读 |
|
[移动开发]Unity工程导入Android工程 |
文章目录1.前言在2018以及以前的版本中,unity到处android工程时是一个完整的AndroidStudio工程。从2019开始unity中到处工程是一个module,所以用起来也更加方便,且unity提供了完整的demo。本文基于使用经验对其做进一步的解释,并提供一些必坑方式。 2.集成到原生Android步骤2.1 导出Android Module在unity中如下图所示,在PlayerSettings界面勾选Export Project然后运行即可到处Android工程。如果AndroidStudio比较新,可能需要在OtherSettings->Configuration->ScriptingBackend选项选择IL2Cpp,然后在targetArchitecrue中勾选Arm64。以unity的demo中所示,到处的模块最外层目录为androidBuild,里面包含所需的文件,其中可用的主要为unityLibrary这个目录下的两个目录。 2.2 导入原生Android工程这个步骤稍微多一点,即如何在android工程中引入外部独立module的方法。步骤如下: 1)引入模块
由于一个AndroidStudio工程包含很多的子项目,上述命令就是告诉此工程要引入一个叫unityLibrary的模块(子工程),此工程的目录为…\UnityProject\androidBuild\unityLibrary,即unity导出的模块中的unityLibrary目录。下图为unity官方demo的截图,表示此工程由两个项目,一个是app,即原生的Android工程,另一个则是引入的unity模块。 2)工程中引入jar包
4)同步工程 3.Unity画面集成与显示上述只是将unity模块引入到Android工程中,此段则是如何使用。此部分需要有一定的android知识,就像unity此demo的github工程中所述。 3.1 以Activity形式集成集成步骤:
2)添加1)中创建的activity到manifest文件。安卓开发需要在manifest中声明,并设置一些属性。以unity的demo为例,其unity相关的activity叫MainUnityActivity:
注:在MainUnityActivity的标签中有一个process=”:Unity"属性,表示在其他进程中开启unity模块,去掉则是依附于主进程。建议采用默认的方式,在独立进程中显示。 3.2 桌面局部显示将unity渲染画面显示在很小的范围内或者一个view或者Layout中。此功能unity是不推荐的,具体可以看Limitations部分。 但是我们根据实现来将unity画面塞到一个Layout中。在3.1部分讲到,unity是将UnityPlayer的一个实例作为画面的,UnityPlayer是一个Framelayout,所以就可以将其addView到其他layout中。至此可以实现将unity画面显示在一个组件中,也就是可以非全屏显示。 3.3 添加原生Android组件由于Unity的画面是一个FrameLayout,也就意味着可以通过addView将原生android组件叠加到unity画面上。如在unity画面上添加一个原生的android Button,怎可以如下处理:
4.问题处理在android原生工程中接入Unity画面时遇到两个问题,第一个是编译时提示资源问题,第二个是编译完成安装后桌面上显示两个icon。 4.1 编译时错误编译时包错android.content.res.Resources$NotFoundException。此问题是由于unity在某些地方调用想要获取game_view_content_description这个资源导致,所以需要在main-.>res->values下找到strings.xml文件(没有则新建),然后添加如下
如下所示,至于文字则不是重点,只要name对即可
4.2 桌面显示多个ICON问题在导入的工程中(unityLibrary)中src-main下面找到AndroidManifest文件,打开将
这几行注释掉即可,同时保证android主manifest文件,unity的activity中也没有上述代码,参考3.1中的manifest文件。 5.LimitationsWhile we tested many scenarios for Unity as a library hosted by a native app, Unity does not control anymore the lifecycle of the runtime, so we cannot guarantee it’ll work in all possible use cases. For example:
总之就是Unity提供了这个功能,但是会有各种问题,毕竟安卓手机太多了,还有各种厂商定制。所以根据多场景验证(tested many scenarios)以下情况不支持: 6.总结虽然2019提供了更直接的集成方法,但是有一些限制,尽量不要做Limitations里的事情。尽量使用demo中提供的方式,尽量使用MainUnityActivity,否则多机型复杂状况下会出各种问题。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 1:37:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |