本项目目的是在移动端的 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 交互

官方文档

安卓集成Unity开发示例(一)的更多相关文章

  1. Android/iOS内嵌Unity开发示例

    Unity 与 Android/iOS 交叉开发主要有两种方式,以 Android 为例,一是 Android 生成 jar 或者 aar 包,导入到 unity3d plugin/bin/ 目录下: ...

  2. Unity开发Android应用程序:调用安卓应用程序功能

    开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...

  3. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  4. unity开发android游戏(一)搭建Unity安卓开发环境

    unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...

  5. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下

    写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...

  6. 使用Unity开发HoloLens应用

    https://developer.microsoft.com/en-us/windows/holographic/install_the_tools 导读:开发者们在陆续收到HoloLens开发者版 ...

  7. (二)Hololens Unity 开发之 语音识别

    学习源于官方文档 Voice input in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (二)Hololens Unity 开发之 语音识别 Hol ...

  8. (二)Hololens Unity 开发入门 之 Hello HoloLens~

    学习源于官方文档 微软官文~ 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (二)Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要 ...

  9. (四)Hololens Unity 开发之 凝视系统

    学习源于官方文档 Gaze in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 HoloLens 有三大输入系统,凝视点.手势和声音 ~ 本文主要记录凝视 ...

随机推荐

  1. Co-prime 杭电4135

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  2. Volatile的应用DCL单例模式(四)

    Volatile的应用 单例模式DCL代码 首先回顾一下,单线程下的单例模式代码 /** * 单例模式 * * @author xiaocheng * @date 2020/4/22 9:19 */ ...

  3. SpringCloud(四)学习笔记之Feign

    Feign是一个声明式的Web服务客户端,可帮助我们更加便捷.优雅地调用HTTP API Feign可以与Eureka和Ribbon组合使用以支持负载均衡 一.构建Eureka Server [基于第 ...

  4. Fiddler抓取抖音视频

    目录 工具 Fiddler配置 手机端配置 工具 Android 或 ios手机均可 Fiddler 下载地址:https://www.telerik.com/fiddler Windows 操作系统 ...

  5. pytorch 矩阵数据增加维度unsqueeze和降低维度squeeze

    增加一个维度 out.unsqueeze(-1) 降低一个维度 out.squeeze(dim=1)

  6. JDBC 工具类封装

    每次使用jdbc 我们都要 加载驱动类 创建链接 创建Statement 接口对象执行sql 关闭资源 按照这样的套路可以封装一些重用代码方便在其他方法中调用 package com.xzlf.jdb ...

  7. nginx 配置大吞吐量

    ng做反向代理服务是如果没有这两行配置吞吐量到8000-10000就上不去. proxy_http_version 1.1; # 后端配置支持HTTP1.1,必须配 proxy_set_header ...

  8. [Linux] 检查是否已有进程在运行

    出处:sblim-sfcb-1.4.9 / sfcBroker.c int process_is_running() { #define STRBUF_LEN 512 #define BUF_LEN ...

  9. 自动化之SaltStack

    一.SaltStack 简介 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...

  10. awk和sed命令

    awk awk是一个强大的编辑工具,可以在无交互的情况下实现相当复杂的文本操作 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 a ...