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 提供的默认配置,适合本地开发和测试 |
|
Editor Hosted | 专为编辑器内测试设计,模拟远程内容加载但实际使用本地资源 |
|
Cloud Content Delivery | 专为Unity的CCD服务优化, |
|
Custom | 完全自定义所有路径 |
|
3、Play Mode Script
Play Mode Script 是 Unity Addressable Asset System 中的一个关键设置,它决定了在编辑器播放模式(Play Mode)下如何加载和管理 Addressable 资源。这个设置在开发阶段特别重要,因为它影响开发者的工作流程和迭代速度。
Use Asset Database (快速模式) | Simulate Groups (模拟模式) | Use Existing Build (使用已构建版本) | |
工作原理 |
|
|
|
优点 |
|
|
|
缺点 |
|
|
|
适用场景 |
|
|
|
如何选择适合的模式
-
项目初期:使用 "Use Asset Database" 快速迭代
-
主要开发阶段:使用 "Simulate Groups" 平衡速度和准确性
-
发布前测试:切换到 "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相关文章,敬请期待~