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

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.lryc.cn/news/599180.html

相关文章:

  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?
  • Oracle数据块8KB、OS默认认块管理4KB,是否需调整大小为一致?
  • 弹性网:基于神经网络的多组分磁共振弹性成像波反演与不确定性量化|文献速递-医学影像算法文献分享
  • LeetCode 127:单词接龙
  • Hive-vscode-snippets
  • Hive【Hive架构及工作原理】
  • Oracle MCP本地部署测试
  • js实现宫格布局图片放大交互动画
  • [python][flask]flask接受get或者post参数
  • 【调试Bug】网络在训练中输出NaN
  • 关于网络模型
  • 基于深度学习的图像分类:使用DenseNet实现高效分类
  • Lua(数据库访问)
  • 全新轻量化PHP网盘搜索引擎系统源码
  • SAP在未启用负库存的情况下,库存却出现了负数-补充S4 1709 BUG
  • NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决
  • Day31| 56. 合并区间、738.单调递增的数字、968.监控二叉树
  • Chromadb 1.0.15 索引全解析:从原理到实战的向量检索优化指南
  • 规则分配脚本
  • Django集成Swagger全指南:两种实现方案详解
  • k8s的存储之secerts
  • 从零开始:在 PyCharm 中搭建 Django 商城的用户注册与登录功能(轮播图+商品页-小白入门版)
  • Qt 与 SQLite 嵌入式数据库开发
  • mid360连接机载电脑,远程桌面连接不上的情况
  • FunASR实时多人对话语音识别、分析、端点检测
  • 当人机交互迈向新纪元:脑机接口与AR/VR/MR的狂飙之路
  • c++注意点(10)----设计模式(原型)
  • 安装pyarrow包
  • SAP-PP-MRPLIST
  • MyBatis高级应用实战指南