安卓集成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 有三大输入系统,凝视点.手势和声音 ~ 本文主要记录凝视 ...
随机推荐
- Wireshark的两种过滤器与BPF过滤规则
Wirshark使用的关键就在于过滤出想要的数据包,下面介绍怎么过滤. 抓包过滤器 Wirshark有两种过滤器,一个是抓包过滤器,一个是显示过滤器,他们之间的区别在于抓包过滤器只抓取你设置的规则,同 ...
- OkHttp 优雅封装 HttpUtils 之 上传下载解密
曾经在代码里放荡不羁,如今在博文中日夜兼行,只为今天与你分享成果.如果觉得本文有用,记得关注我,我将带给你更多. 还没看过第一篇文章的欢迎移步:OkHttp 优雅封装 HttpUtils 之气海雪山初 ...
- 2019CISCN华南线下两道web复现
原帖地址 : https://xz.aliyun.com/t/5558 2019CISCN华南线下的两个简单 web 部分题目下载地址,有的不完整 : 点我点我 web 1 考点 : 无参函数的 RC ...
- 解决sublime打开文档,出现中文乱码问题
sublime text 软件中出现中文乱码,大多是因为编码格式不支持,需要安装一个插件就可以解决中文乱码问题,推荐安装 ConvertToUtf8 安装步骤: 1.按“shift + ctrl + ...
- 关于JavaEE中Spring模块的学习!
七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...
- shell脚本之awk(一)
运维必备技能 概述: 1.awk是一种编程语言,用于linux/unix下对文本和数据进行扫描.处理数据来源:标准输入.文件.管道. 2.linux中常用的awk编译器版本有mawk,gawk.R ...
- 2019-2020-1 20199326《Linux内核原理与分析》第三周作业
第三周学习内容 庖丁解牛Linux内核分析第二章:操作系统是如何工作的 Linux内核分析实验二 学到的一些知识 计算机的三大法宝:存储程序计算机,函数调用堆栈,中断 堆栈是C语言程序运行时必须使用的 ...
- notepad正则删除关键词所在行
转自:http://www.gangzi.net/article/615.htm 查找:^.*大师兄.*$替换为:(空) 如果不留空行:查找:^.*大师兄.*\r?\n替换为:(空)注意:Notepa ...
- vue2.x学习笔记(三十)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12682902.html. 状态管理 类Flux状态管理的官方实现 由于状态零散地分布在许多组件和组件之间的交互中, ...
- 【Linux常见命令】find命令
find - search for files in a directory hierarchy find命令用来在指定目录下查找文件. 任何位于参数之前的字符串都将被视为欲查找的目录名. 如果使用该 ...