仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述安卓集成Unity开发示例相关的知识,希望能为你提供帮助。
本项目目的是在移动端的 Native App 中以库的形式集成已经写好的 Unity 工程,利用 Unity 游戏引擎便捷的开发手段进行跨平台开发。
Unity官方文档 Unity as a Library integration example to iOS and Android
环境
- android Studio
3.5.3
- Unity version
2019.3.7f1
- Android Studio 新建项目:
文章图片
- Unity 新建项目:
文章图片
- 最终工程结构如下:
文章图片
- 通过 Unity 打开 UnityProject
- 选择 File ->
Build Settings ->
Switch Android Platform ->
Export Project
文章图片
【安卓集成Unity开发示例】
文章图片
- 这时候选择Export可能会提示JDK路径配置出错,没关系我们到 Preference ->
Externl Tools 设置路径
文章图片
文章图片
- 可以点击Export了,路径选择可以自由选择,这里建议按照官方来
文章图片
- 通过 Android Studio 打开 NativeAndroidApp
- 选择 setting.gradle 文件添加 unityLibrary module
include ‘:unityLibrary‘ project(‘:unityLibrary‘).projectDir = new File(‘..\\UnityProject\\androidBuild\\unityLibrary‘)
- 选择 build.gradle(Module:app)添加 dependencies
dependencies { implementation project(‘:unityLibrary‘) implementation fileTree(dir: project(‘:unityLibrary‘).getProjectDir().toString() + (‘\\libs‘), include: [‘*.jar‘]) // 自己项目的配置 }
- 选择 build.gradle(Module:NativeAndroidApp)
allprojects { repositories { google() jcenter()// Add Code flatDir { dirs " ${project(‘:unityLibrary‘).projectDir}/libs" } // End } }
- 选择 NativeAndroidApp 的 strings.xml 添加
< resources> < string name=" app_name" > NativeAndroidApp< /string> < string name=" action_settings" > Settings< /string> // Add Code < string name=" game_view_content_description" > Game view< /string> // End < /resources>
- 以库形式使用的Unity仅支持全屏渲染,不支持在屏幕的一部分进行渲染;
- 不支持加载多个Unity运行时实例,Unity可选择附着与当前App的进程,也可以另启一个进程(目前仅限于Android);
- 开发者需要调整第三方插件,包括原生插件和托管插件,目前我们做VR App就遇到了这种窘妆,库支持堪忧;
- 生命周期事件的感知(目前最新版本已经添加了部分事件);
- Android 空工程包体 2.2M
- Unity IL2CPP ARM64 &
V7a 空工程包体 9.87M &
9.12M
- Unity Into Android 空工程包体 22.9M:
- 跑在同一进程,资源不能完全释放
- 跑在不同进程,资源可以完全释放
- 传统数据交换 -函数传参 - 支持
- 数据指针交换 -推拉流数据 - 支持
- 共享纹理 - 相机采集数据 - 支持
- C++ 直接交互 - 底层库 - 支持
- AAR plug-ins and Android Libraries
- JAR plug-ins
- Extending the UnityPlayerActivity Code
- Native (C++) plug-ins
- Using Java and Kotlin source files as plug-ins
- Unity as a Library
- Unity into Android API
- Unity into Android Step Details
推荐阅读
- 复习Appium之Android自动化
- Android.mk编译Helloworld
- 关于数据库查询new BeanPropertyRowMapper
- ValueError: must have exactly one of create/read/write/append mode
- ReactNative+TypeScript仿喜马拉雅开发App
- 实战企业级项目 践行App重构之路
- uni-app 快速入门 从零开始实现新闻资讯类跨端应用
- @MapperScan注解
- 用TabLayout+ViewPager+Fragment控件实现简单的翻页效果--Android--