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

Unity Addressable使用之入门篇

        Addressable Assets(可寻址资源)系统是Unity提供的一种高级资源管理解决方案,它解决了传统资源管理中的诸多痛点,特别适合中大型项目开发。

官方文档

Unity Addressable Asset system | Addressables | 1.14.3

安装步骤

在Package Manager中搜索安装

安装过后,可以看到新增了Addressables菜单栏

创建Addressables Settings(Window > Asset Management > Addressables > Groups)

 

创建成功后会生成AddressableAssetsData文件夹,用于将可寻址资源元数据存储在项目的 Assets 目录中。

拖拽资源到Addressables Groups

Addressables Groups窗口介绍

1、创建新的资源组

2、配置文件管理

        Addressable Profiles 窗口是用于管理不同构建和加载环境配置的核心工具,可以为不同发布环境(如开发、测试、生产等)定义不同的路径和设置。

        Profiles系统使得在不同环境间切换构建配置变得非常简单,无需手动修改每个组的路径设置,只需切换Profile即可自动应用所有相关配置,大大提高了工作流程的效率并减少了配置错误。

菜单栏描述

Local Build Path

本地构建路径

Local Load Path

本地加载路径

Remote Build Path

远程构建路径

Remote Load Path

远程加载路径

[UnityEditor.EditorUserBuildSettings.activeBuildTarget]

自动适配当前平台

 菜单栏描述

选项

特点

使用场景

Built-In

Unity 提供的默认配置,适合本地开发和测试

  • 快速开始使用Addressables

  • 本地开发环境

  • 不需要远程内容分发的小型项目

Editor Hosted

专为编辑器内测试设计,模拟远程内容加载但实际使用本地资源

  • 测试远程加载逻辑而不实际部署到服务器

  • 验证远程内容更新流程

  • 开发阶段的快速迭代测试

Cloud Content Delivery

专为Unity的CCD服务优化,

  • 使用Unity官方CCD服务的大型项目

Custom

完全自定义所有路径

  • 使用自建CDN或第三方存储服务

  • 需要特殊目录结构的项目

  • 多环境复杂配置需求

3、Play Mode Script 

Play Mode Script 是 Unity Addressable Asset System 中的一个关键设置,它决定了在编辑器播放模式(Play Mode)下如何加载和管理 Addressable 资源。这个设置在开发阶段特别重要,因为它影响开发者的工作流程和迭代速度。

Use Asset Database

(快速模式)

Simulate Groups

(模拟模式)

Use Existing Build

(使用已构建版本)

工作原理

  • 直接通过 Unity 的 Asset Database 加载资源
  • 完全绕过 Addressables 的打包系统
  • 不生成任何 AssetBundle
  • 模拟完整的 Addressables 系统行为
  • 在内存中构建虚拟的 AssetBundle 结构
  • 使用真实的加载路径和依赖管理
  • 使用之前构建的真正的 AssetBundle
  • 完全模拟发布后的运行环境

优点

  • 最快的迭代速度
  • 无需等待构建过程
  • 适合快速原型开发
  • 比完整构建快得多
  • 能测试加载逻辑和依赖关系
  • 可以模拟远程加载场景
  • 最接近最终产品的行为
  • 能测试所有加载逻辑和打包问题

缺点

  • 无法测试实际的加载逻辑
  • 无法模拟打包后的资源组织方式
  • 可能隐藏资源依赖问题
  • 比 Asset Database 模式稍慢
  • 某些底层行为可能与实际构建不同
  • 需要预先构建 AssetBundle
  • 每次资源变更后需要重新构建
  • 迭代速度最慢

适用场景

  • 早期开发阶段
  • 当只关注内容而非加载逻辑时
  • 需要快速测试资源变更时
  • 大多数开发阶段
  • 需要测试加载逻辑但不想等待完整构建时
  • 验证资源分组和依赖关系时
  • 准备发布前的最终测试
  • 调试打包后出现的特定问题
  • 测试远程加载和更新流程

如何选择适合的模式

  1. 项目初期:使用 "Use Asset Database" 快速迭代

  2. 主要开发阶段:使用 "Simulate Groups" 平衡速度和准确性

  3. 发布前测试:切换到 "Use Existing Build" 进行全面验证

4、Build菜单栏

New Build(新建构建)

  • 执行完整的 Addressables 资源构建流程
  • 生成所有配置的 AssetBundles(包括本地和远程资源)

打包的路径

Update a Previous Build(更新已有构建)

  • 基于已有构建执行增量更新
  • 只重新构建修改过的资源

Clear Build Cache(清除构建缓存)

是 Addressable Asset System 中的一个维护功能,用于删除 Addressables 系统在构建过程中生成的缓存数据。这个功能可以确保每次构建都基于最新的资源状态

当执行清除操作时,会删除以下类型的缓存数据:

AssetBundle 构建缓存

1、临时生成的 AssetBundle 文件

2、依赖关系缓存

3、构建配置缓存

使用场景

1. 解决构建异常

当遇到以下构建问题时建议清除缓存:

构建过程中出现不可预知的错误

资源明明已修改但构建后未生效

依赖关系计算出现异常

2. 平台切换后

当从 iOS 切换到 Android 或其他平台构建时

确保不会混用不同平台的缓存数据

3. 重大配置变更后

Addressables 系统版本升级后

修改了重要的构建参数后

资源分组结构发生重大调整时

注意事项

1、性能影响:清除缓存后首次构建会较慢,系统需要重新计算所有依赖关系,后续构建会重新生成必要的缓存。

2、数据安全性:不会删除您的原始资源文件,不会影响已发布的远程资源,只会删除本地临时缓存文件。

简单使用

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.UI;public class ResTest : MonoBehaviour
{public Image img;void Start(){Addressables.LoadAssetAsync<Sprite>("Assets/Res/Icons/icon_prop_1.png").Completed+= (asset) =>{img.sprite = asset.Result;};}
}

后续会继续学习整理Addressable相关文章,敬请期待~

http://www.xdnf.cn/news/14372.html

相关文章:

  • 讲一下进程和线程
  • Day54打卡 @浙大疏锦行
  • 37-Oracle 23 ai Shrink Tablespace(一键收缩表空间)
  • Composer 的 PHP 依赖库提交教程
  • 【Qt】Qt 基础
  • Redis-CPP通用接口
  • Leetcode 3584. Maximum Product of First and Last Elements of a Subsequence
  • 139. 单词拆分
  • (LeetCode 每日一题) 1432. 改变一个整数能得到的最大差值(贪心)
  • React组件通信——context(提供者/消费者)
  • MySQL常用函数详解之字符串函数
  • nohz_full 参数对内核软硬锁检测机制的影响分析
  • 嵌入式学习笔记 - SH79F6441 堆栈栈顶可以是片上内部RAM(00H-FFH)的任意地址怎么理解
  • (91)课113:存储函数与存储过程的区别总结。
  • DP刷题练习(三)
  • Golang 解大整数乘法
  • Python Pillow 库详解文档
  • pythton 语言的独特语法
  • Axure应用交互设计:多种类型元件实现新增中继器数据
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(五)
  • Python爬虫实战:研究Mr. Queue相关技术
  • 【Java SE】类和对象(3)
  • Kafka源码P2-生产者缓冲区
  • 基于大模型预测缺铁性贫血的综合技术方案大纲
  • 记录一次 Oracle 表空间不足问题的解决过程
  • Linux进程间通信(上)
  • Proteus8.17-LCD12864液晶屏幕仿真模型
  • 华为OD机试-考勤信息-双指针(JAVA 2025B卷)
  • AI是什么?大模型、语料、训练、推理、机器学习、神经网络等专业名词如何关联
  • 基于docker的nocobase本地部署流程