当前位置: 首页 > web >正文

Android Studio 2024 内嵌 Unity 3D 开发示例

Android 内嵌 Unity 开发示例

  • 1 环境
    • 1.1 Unity Android 构建环境
      • 1.1.1 Android 构建支持
      • 1.1.2 确认 Unity 2021.3.45f1c2 安装的 NDK 版本
    • 1.2 Android Studio 2024 构建环境
  • 2 新建工程
    • 2.1 新建 Android Studio 项目:NativeAndroidApp
    • 2.2 新建 Unity 3D 项目:Unity3DSample
      • 2.2.1 点击【Player Settings...】进行导出设置
      • 2.2.2 导出 Unity Android 构建的工程
  • 3 Android 接入
    • 3.1 在 NativeAndroidApp 中把 unityLibrary 配置为 Library 模块
    • 3.2 使用 unityLibrary
      • 3.2.1 复制资源
      • 3.2.2 工程结构
    • 3.3 Unity 场景作为子视图
  • 错误:Execution failed for task ':unityLibrary:BuildIl2CppTask'.

Unity 导出 Android 工程,在 Android Studio 中作为库二次开发示例

1 环境

Android Studio 2024.3.2 Patch 1
Unity 2021.3.45f1c2

1.1 Unity Android 构建环境

1.1.1 Android 构建支持

我们知道Unity Hub 是 Unity 官方提供的集中管理工具,支持一键切换不同项目使用的 Unity 版本,自动维护版本间的独立性,避免冲突。同时也对模块化组件进行管理,包含各平台(Android、iOS、Windows 等)构建支持模块。

  • 点击【添加模块】
    在这里插入图片描述
  • 确认 Android 构建支持的环境是否已经安装,没安装就安装下
    在这里插入图片描述

1.1.2 确认 Unity 2021.3.45f1c2 安装的 NDK 版本

在开发的过程中,使用 Unity 自带的 NDK 版本兼容性最好。因此我们将在 Android Studio 2024 中设置相应的版本。,我们来找 Unity 2021.3.45f1c2 对应的 NDK 版本:

  • 打开 Unity 2021.3.45f1c2 编辑器的目录
    在这里插入图片描述
  • 在打开的目录中进入:Editor\Data\PlaybackEngines\AndroidPlayer\NDK 子目录
    在这里插入图片描述
  • 打开 source.properties 文件,内容如下:
Pkg.Desc = Android NDK
Pkg.Revision = 21.3.6528147

表示使用的是 NDK 版本 21.4.7075529。

NDK 的历史版本:Unsupported Downloads · android/ndk Wiki · GitHub

1.2 Android Studio 2024 构建环境

  • 安装对应版本的 NDK 21.4.7075529
    在这里插入图片描述

2 新建工程

环境准备好了,新建两个工程来进行演示。

2.1 新建 Android Studio 项目:NativeAndroidApp

  • 选择【No Activity】
    在这里插入图片描述
  • 配置项目名称:NativeAndroidApp,包名,语言:java,选择并记录对应的 SDK 版本,选择配置语言【Groovy DSL】(方便和后续 Unity导出的工程一致),配置好后点击【Finish】创建项目。
    在这里插入图片描述

2.2 新建 Unity 3D 项目:Unity3DSample

在 Unity Hub 中,创建一个 2021.3.45f1c2 版本的 Unity 3D 项目,选择项目位置,输入项目名称:Unity3DSample,点击【创建项目】
在这里插入图片描述

  • 创建完后后,打开 Unity3DSample,点击【File->Build Settings…】进行构建设置
    在这里插入图片描述

  • 在构建设置面板的【Platform】中切换到 Android, 如果未安装会显示【Install with Unity Hub】,点击安装即可。我们前面已经安装,忽略
    在这里插入图片描述

  • 已安装 Andorid 构建支持模块选择【Android】后会显示【Switch Platform】,点击会切换到 Android 平台构建
    在这里插入图片描述

2.2.1 点击【Player Settings…】进行导出设置

  • 配置 【Player->Other Settings->Configuration】,
    • 【Scripting Backend】(脚本后端)改为:IL2CPP,将C#代码转换为C++,再编译为原生机器码
    • 让工程支持arm v7和arm v8两种架构,否则在某些机型上,会运行失败。
    • 【Incremental GC】(增量垃圾回收)可勾选
      在这里插入图片描述
  • 配置包名 com.lzc.Unity3DSample,配置 Android SDK 版本,要和创建 NativeAndroidApp 的版本一致
    在这里插入图片描述
  • 关闭窗口,回到Build Settings界面。

2.2.2 导出 Unity Android 构建的工程

  • 勾选【Export Project】,然后点击右下角的【Export】。
    在这里插入图片描述

  • 出来弹窗后,新建文件夹【Unity3DExport】,选择【Unity3DExport】做为导出目录后,开始导出。
    在这里插入图片描述

  • 自动生成的是一个可以用 Android Studio 打开的工程,如下:
    在这里插入图片描述

3 Android 接入

移动 Unity3DExport 目录下的 unityLibrary 工程到 NativeAndroidApp 目录下:
在这里插入图片描述

3.1 在 NativeAndroidApp 中把 unityLibrary 配置为 Library 模块

在 Android Studio 中打开 NativeAndroidApp

  • 把 Unity3DExport/gradle.properties 中 Unity 的参数拷贝到工程的 NativeAndroidApp/gradle.properties
# 配置 Unity 的 Streaming Assets 路径。留空使用默认路径(Assets/StreamingAssets)
unityStreamingAssets=
# 指定 Unity 导出的 Android 项目模板版本。
unityTemplateVersion=7

在这里插入图片描述

  • 在 NativeAndroidApp/settings.gradle 中加上 unityLibrary 模块:
include ':app', ':unityLibrary'

在这里插入图片描述

  • 在 NativeAndroidApp/app/build.gradle 中增加对 unityLibrary 的依赖
    implementation project(':unityLibrary')implementation fileTree(include: ['*.jar']
http://www.xdnf.cn/news/16325.html

相关文章:

  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(1)RNN、LSTM 和 GRU 的基本原理和应用
  • 全国产化5G-A低空经济基座
  • 【Unity笔记】OpenXR 之VR串流开发笔记:通过RenderTexture实现仅在PC端展示UI,在VR眼镜端隐藏UI
  • 大模型进阶面试题
  • 车载 CAN-Bus 数据记录仪说明书
  • 【C语言进阶】一篇文章教会你文件的读写
  • 【unitrix】 6.16 非负整数类型( TUnsigned )特质(t_unsingned.rs)
  • 电子电子架构 --- 软件项目的开端:裁剪
  • Java面试题(中等)
  • Javascript NaN Symbol BigInt
  • TDengine 转化类函数 CAST 用户手册
  • 7.24 C/C++蓝桥杯 | 排序算法
  • Android15或AndroidU广播的发送流程
  • 星慈光编程虫2号小车讲解第三篇--附件概述
  • 深入理解 IO 多路复用:从 select 到 epoll
  • MySQL---索引、事务
  • VUE2 学习笔记5 动态绑定class、条件渲染、列表过滤与排序
  • 【全新上线】境内 Docker 镜像状态监控
  • 秋招Day18 - MyBatis - 基础
  • C语言转义字符‘\\‘‘ 解析与常见误区
  • 六种经典智能优化算法(PSO/GWO/WOA/HHO/DBO/SSA)无人机(UAV)三维路径规划,Matlab代码实现
  • TimeXer - 重新审视时序预测内的外生变量
  • 【LeetCode数据结构】二叉树的应用(一)——单值二叉树问题、相同的树问题、对称二叉树问题、另一棵树的子树问题详解
  • MySQL的命令行客户端
  • markdown学习笔记(个人向) Part.2
  • 跨境支付入门~国际支付结算(区块链篇)
  • C语言:20250724笔记(函数-指针)
  • JAVA_THIRTEEN_常用API
  • 【分布式锁】什么是分布式锁?分布式锁的作用?
  • tensorflow搭建神经网络