SuperAPI AI 工具集

unity-addressables-design

设计与创作

查看项目

更新于 10-15 17:25

技能介绍

用途:该模块为 Unity Addressables 提供基于源码的设计规则,覆盖 1.22.3(Unity 2022 LTS,最低 2019.4)与 2.9.1(Unity 6,最低 2023.1)两个版本。每条规则引用具体文件与行号,便于审查,避免 AI 依据过时记忆臆测。

主要能力:给出关键规则与版本差异矩阵。核心规则包括:所有非 Async 变体(LoadAsset、Instantiate、LoadScene、UnloadScene、GetDownloadSize、DownloadDependencies、Initialize、LoadContentCatalog)在 1.22.3 中已标记 [Obsolete],在 2.9.1 中已移除,应始终使用 *Async 形式;每个 Load/Instantiate 返回的 AsyncOperationHandle 必须通过 Addressables.Release(handle) 释放,否则 AssetBundle 会长期驻留内存;WaitForCompletion() 同步阻塞调用线程,WebGL 不支持并抛异常,生产环境主线程不应调用,改用 await handle.Task 或 Completed 事件;2.9.1 的 LoadSceneAsync 新增 SceneReleaseMode releaseMode 参数(默认 ReleaseSceneWhenSceneUnloaded);多键重载由 IList<object> 改为 IEnumerable;LegacyResourcesLocator、LegacyResourcesProvider、DiagnosticEvent、ResourceManagerEventCollector、ResourceManager.RegisterDiagnosticCallback() 等在 2.9.1 中移除;目录更新流程严格为 CheckForCatalogUpdates → UpdateCatalogs,2.9.1 的 UpdateCatalogs(bool autoCleanBundleCache, ...) 可一次调用自动清理陈旧 bundle;AssetReference.LoadAssetAsync<T>() 返回的句柄须用 assetRef.ReleaseAsset() 释放,而非 Addressables.Release(handle),混用会导致重复释放异常;1.22.3 的 InitializationOperation 属性已过时并返回默认值,应改用 await Addressables.InitializeAsync()。

使用方式:在编写或审查 Addressables 引导代码、异步加载、场景加载与卸载、热更新与目录刷新、下载依赖、AssetReference 声明与释放、WaitForCompletion 或 AsyncOperationHandle 直接使用、以及 1.22.3 到 2.9.1 迁移前加载本模块。模块为纯文档,无 REST 技能门控,可在任意运行模式下自由加载。子文档按主题路由:INIT、HANDLES、LOADING、SCENE、UPDATE、DOWNLOAD、ASSETREF、PITFALLS。

适用场景:Addressables 代码编写与审查、异步资源与场景加载、热更新与目录刷新、版本迁移。

限制:仅覆盖上述两个版本,未标注版本的规则适用于两者;涉及 asmdef 布局、异步编排、架构决策、性能审查时应转至对应模块;资料未提供收费、价格与平台信息。