安卓集成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
新建工程操作步骤(安卓)
Step.1
- Android Studio 新建项目:
- Unity 新建项目:
- 最终工程结构如下:
Step.2
通过 Unity 打开 UnityProject
选择 File -> Build Settings -> Switch Android Platform -> Export Project
这时候选择Export可能会提示JDK路径配置出错,没关系我们到 Preference -> Externl Tools 设置路径
- 可以点击Export了,路径选择可以自由选择,这里建议按照官方来
Step.3
通过 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++ 直接交互 - 底层库 - 支持
建议参考
安卓 & U3D 交互
- 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开发示例(一)的更多相关文章
- Android/iOS内嵌Unity开发示例
Unity 与 Android/iOS 交叉开发主要有两种方式,以 Android 为例,一是 Android 生成 jar 或者 aar 包,导入到 unity3d plugin/bin/ 目录下: ...
- Unity开发Android应用程序:调用安卓应用程序功能
开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...
- C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例
C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...
- unity开发android游戏(一)搭建Unity安卓开发环境
unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...
- 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...
- 使用Unity开发HoloLens应用
https://developer.microsoft.com/en-us/windows/holographic/install_the_tools 导读:开发者们在陆续收到HoloLens开发者版 ...
- (二)Hololens Unity 开发之 语音识别
学习源于官方文档 Voice input in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (二)Hololens Unity 开发之 语音识别 Hol ...
- (二)Hololens Unity 开发入门 之 Hello HoloLens~
学习源于官方文档 微软官文~ 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (二)Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要 ...
- (四)Hololens Unity 开发之 凝视系统
学习源于官方文档 Gaze in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 HoloLens 有三大输入系统,凝视点.手势和声音 ~ 本文主要记录凝视 ...
随机推荐
- Tcxgrid使用例子
1.更改某个单元格的值后,其他单元格的值也相应改变 直接点击单元格进行更改值,然后在改单元格增加相应的事件: procedure Tfrm_BarCode_makecl5.gdtv_1select_t ...
- Go gRPC进阶-go-grpc-middleware使用(八)
前言 上篇介绍了gRPC中TLS认证和自定义方法认证,最后还简单介绍了gRPC拦截器的使用.gRPC自身只能设置一个拦截器,所有逻辑都写一起会比较乱.本篇简单介绍go-grpc-middleware的 ...
- 1. jquery插件手机
1. http://jqtjs.com/preview/demos/main/index.html#home2. jquery weUI ===== 插件:https://blog.csdn.net/ ...
- Couchdb 垂直权限绕过漏洞(CVE-2017-12635)漏洞复现
couchdb简介: Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为“完全拥抱web的数据库”.它是一个使用JSON作为数据存储格式,javascript作为查询语言,M ...
- jmeter插件 --PerfMon Metrics Collector监控工具的使用
PerfMon Metrics Collector 用来监控 被压测服务器的cpu.内存.磁盘.网络等 1.服务端监控程序ServerAgent下载 https://github.com/undera ...
- 被折磨致死的heroku——herku部署
最近一直在弄heroku部署上线,但是因为中国墙和英语问题,一直弄不好,,很是烦躁,所有暂时先放弃了,但是因为查询了一些资料,有些文档链接有必要放到下面,方便各位和自己查看: heroku官方网站: ...
- Java工作流引擎-集团模式下的权限 设计与实现
关键字 工作流开发框架权限设计.用户组.岗位.集团模式应用. java工作流程引擎, .net 工作流引擎,工作流开发框架 相关的表结构 -- 相关组织-表结构. SELECT No,Name,Par ...
- Java中接口的概念
接口的特点: A:接口用关键字interface表示 interface 接口名 {} B:类实现接口用 implements 表示 class 类名 implements 接口名 {} C:接口不能 ...
- jeecg ant design vue一级菜单跳到外部页面——例如跳到百度
需求:点击首页跳到百度新打开的页面 找到SideMenu.vue 对应的inde.js找到renderMenuItem 函数.加一个判断 if(menu.meta.url=='https://ww ...
- Linux下jdk的安装和环境变量的配置
Linux下jdk的安装和环境变量的配置 一.jdk的下载 方式一:在官网下载 http://www.oracle.com/technetwork/java/javase/downloads/inde ...