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

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

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

相关推荐
小小数媒成员20 小时前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
林川~011 天前
Unity新输入系统使用笔记
unity·input system
小贺儿开发2 天前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
林川~012 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园3 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~013 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api
sensen_kiss3 天前
CPT306 Coursework 1 个人游戏作业——坦克大战
unity·游戏程序·游戏策划
蒸鱼Yuzheng3 天前
Unity 与 Unreal 测试工具怎么回答:Profiler、日志、自动化与证据链
测试工具·unity·性能分析·游戏测试·unrealengine
野区捕龙为宠3 天前
Unity WebGL平台 通过 URL 加载图片(UGUI RawImage / 模型材质)
unity·团结引擎
阿松爱学习4 天前
【Unity开发】FileStream 详解及用法指南
unity·c#·unity开发