当前位置: 首页 > 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.dtcms.com/a/297235.html

相关文章:

  • Oracle转Mysql建表脚本
  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?
  • 【Android Studio】安装Trae插件后Android Studio 启动崩溃问题处理
  • 瑞萨电子RA-T MCU系列新成员RA2T1——电机控制专家
  • CPU(中央处理器)和GPU(图形处理器)的区别
  • vscode npm run build打包报ELIFECYCLE
  • 一文解析公平锁、非公平锁、悲观锁、乐观锁、可重入锁和锁的升级(含详细代码实例)
  • MJ11032G和MJ11033G是对管由onsemi/安森美公司研发的一款高性能、低功耗的达林顿晶体管
  • 能源管理网页的碳中和视觉语言:数据图表中的环保色彩体系创新
  • 基于51单片机的光照强度检测系统Protues仿真设计
  • 卸油管连接检测误报率↓78%:陌讯多模态融合算法实战解析
  • 信息学奥赛一本通 1593:【例 2】牧场的安排 | 洛谷 P1879 [USACO06NOV] Corn Fields G
  • 机器学习——KNN算法
  • SpringBoot与ApacheSpark、MyBatis实战整合
  • DeepSeek FlashMLA 技术拆解,AI 推理迎来颠覆性突破
  • 黑马点评常见面试题
  • Apache Ranger 权限管理
  • Python之--字典
  • CMake进阶: 检查函数/符号存在性、检查类型/关键字/表达式有效性和检查编译器特性
  • LP-MSPM0G3507学习--11ADC之二双通道高速DMA采样
  • rtpengine的docker化
  • Linux进程信号——信号保存
  • 在幸狐RV1106板子上用gcc14.2本地编译安装ssh客户端/服务器、vim编辑器、sl和vsftpd服务器
  • OSI 七层模型和五层模型
  • Vue3 学习教程,从入门到精通,Vue3 监听属性(Watchers)语法知识点及案例代码(16)
  • Unity编辑器拓展 IMGUI与部分Utility知识总结(代码+思维导图)
  • JAVA-09(2025.07.25学习记录)
  • MMRotate ReDet ReFPN 报错 `assert input.type == self.in_type`
  • Franky — 边缘计算智能语音助手 / Edge‑Computing Smart Voice Assistant
  • 04-netty基础-Reactor三种模型