该项目采用Addressables管理资源,将开放世界场景按区域分块打包为AssetBundle,玩家在游戏中通过触发剧情加载对应场景块。 技术环境为Unity 2020.3.20f1,Addressables版本1.19.19,目标平台为Switch(系统版本14.1.2),NPC角色预制体包含Animator组件、自定义动画状态机控制器 接着,检查Addressables的资源分组配置,发现“森林场景块”所在分组的“Build Path”设置为“RemoteBuildPath”,而Switch平台的远程资源加载需要在Player Settings 同时,NPC角色预制体通过Addressables.LoadAssetAsync加载后,仅实例化了角色对象,未将Animator组件与加载的Animator Controller建立长期引用关系。 在Unity的资源管理机制中,Addressables默认启用“Unload Unused Assets”自动回收功能,当资源没有被任何对象强引用时,会在一定时间后被标记为“未使用资源”并释放。
Builds *.apk *.aab *.unitypackage # Crashlytics generated file crashlytics-build.properties # Packed Addressables
# Builds *.apk *.unitypackage # Crashlytics generated file crashlytics-build.properties # Packed Addressables
在Unity中,可通过Sprite Packer工具进行手动打包,也可使用Addressables系统实现纹理图集的自动打包与动态管理,但需要注意图集的尺寸不宜过大,建议控制在2048x2048以下,避免单个图集占用过多显存 笔者在某开放世界项目中,通过Addressables系统实现ETC2纹理的异步加载与资源释放,场景切换时间从3.5秒缩短至1.8秒,显存占用峰值降低了40%。
使用 Addressables 或 AssetBundle 进行资源管理: 这可以减少资源加载时间。
资源引用 使用 Addressables 或 AssetBundle 替代 Resources.Load,提高资源管理灵活性。
我们将庞大的地图资源划分为动态加载单元,采用Unity Addressables动态加载系统,根据玩家视角动态调整加载半径。
打开菜单栏 Window -> Asset Management -> Addressables -> Groups。