Unity资源管理框架Addressables[六] 内存管理

本文致力于总结Addressables内存管理相关概念/工作流/注意事项,起到将官方文档的 内存管理 章节进行整合与精简的作用。

一.内存管理概述

Addressables 系统对加载的AB包和AB包内的资产采用引用计数管理。加载可寻址对象时,资产和AB包的引用技术增加。释放可寻址资产时,资产和AB包的计数减少。AB包计数返回零时,AB包可被卸载。资产的加载和卸载应该成镜像的配对调用。

AB包和包内资产所占用内存是独立的,引用计数也是独立的,记住这点非常关键。

二.包的加载和卸载

整包加载:AssetBundle包含一个或多个资产,加载其中一个资产会导致整个AssetBundle包被加载到内存中

整包卸载:AssetBundle无法被部分卸载,应该当AssetBundle中所有资源都不用时,再卸载AssetBundle

三.包内资产的加载和卸载

包内资产可以逐个加载,不能逐个卸载。对资产调用释放的方法后,其内存不会立刻释放,包内资产会在释放AB包时进行释放。

四.资产加载卸载示例

A包中有资产:猫,树;

加载猫后,A包、猫被加载到内存中;计数:A包:1,猫:1,树:0;

加载树后,A包、猫、树加载到内存中;计数:A包:2,猫:1,树:1;

猫用完后,调用释放方法,A包、猫、树被加载到内存中;计数:A包:1,猫:0,树:1;

树用完后,调用释放方法,计数:A包:0,猫:0,树:0;此时A包和包内所有资产释放

可调用Resources.UnloadUnusedAssets卸载包内计数为0的资产的内存,但是因其性能较差,官方和社区都不推荐这么做,

五.性能优化之避免资产频繁卸载加载载

应当避免包被卸载后又立刻加载的情况,造成性能浪费

相关推荐
ysn111111 天前
搭建状态同步框架的实践心得
unity·架构
weixin_441940011 天前
【Unity教程】使用vuforia创建简单的AR实例
unity·游戏引擎·ar
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 12:可见性与 Z‑Buffer 深度缓存
unity·godot·图形渲染·three.js·opengl·unreal
游乐码2 天前
Unity基础(十一 )资源同步加载
unity·游戏引擎
LONGZETECH2 天前
汽车仿真教学软件技术实现深度解析:从三维建模到学情数据闭环
c语言·3d·unity·架构·汽车
游乐码2 天前
unity基础(九)协程原理
unity·游戏引擎
winlife_2 天前
全程用 AI 做一款商业级手游 · EP0 立项:能做到吗、怎么做、边界在哪
人工智能·unity·ai编程·游戏开发·商业化·mcp·funplay
nnsix2 天前
Unity Texture2D的 Read/Write 选项
unity·游戏引擎
winlife_3 天前
全程用 AI 做一款商业级手游 · EP1 地基:先搭框架层,不急着写玩法
unity·ai编程·游戏架构·mcp·框架设计·funplay
小贺儿开发3 天前
Unity VideoPlayer 播放控制器
unity·编辑器·播放器·视频·工具·videoplayer·互动