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的资产的内存,但是因其性能较差,官方和社区都不推荐这么做,

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

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

相关推荐
山檐雾3 小时前
OctreeNode
unity·c#·八叉树
WarPigs5 小时前
Unity协程返回值的解决方案
unity·游戏引擎
WarPigs9 小时前
Unity单例笔记
unity·游戏引擎
Allen74741 天前
ComfyUI 自动化生产 3D资产 工作流笔记
图像处理·opencv·unity·自然语言处理·3d模型生成·confyui
nnsix1 天前
Unity Windows11 打字中文显示不出来输入法的候选框
unity
adogai2 天前
unity mcp接入 实现一句话生成游戏!
游戏·unity·游戏引擎
mxwin2 天前
Unity Shader 逐像素光照 vs 逐顶点光照性能与画质的权衡策略
unity·游戏引擎·shader·着色器
CDN3602 天前
游戏盾导致 Unity/UE 引擎崩溃的主要原因排查?
游戏·unity·游戏引擎
mxwin2 天前
Unity URP 全局光照 (GI) 完全指南 Lightmap 采样与实时 GI(光照探针、反射探针)的 Shader 集成
unity·游戏引擎·shader·着色器
mxwin2 天前
Unity URP 溶解效果基于噪声纹理与 clip 函数实现物体渐隐渐显
unity·游戏引擎·shader