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

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

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

相关推荐
派葛穆2 小时前
Unity-鼠标悬停改变物体层级
unity·游戏引擎
小贺儿开发6 小时前
Unity3D 爆炸图案例演示
unity·产品·urp·机械拆装·爆炸图·零件·效果设计
Yasin Chen1 天前
Unity TMP_SDF 分析(二)数据来源2
unity·游戏引擎
Mao_Hui1 天前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
心疼你的一切1 天前
【Unity-MCP完全指南:从零开始构建AI游戏开发助手】
人工智能·unity·ai·游戏引擎·aigc·mcp
示申○言舌1 天前
基于知识库(RAG)系统打造由大模型(LLM)驱动NPC游戏的技术设想
游戏·unity·大模型·知识库·rag·智能npc·npc记忆
国家一级摸鱼选手2 天前
MCP(Model Context Protocol)学习笔记
unity·ai·mcp
会思考的猴子2 天前
Unity3D发布后软件界面右下角出现Trial Version
unity
ellis19702 天前
Unity资源管理框架Addressables[五] 构建
unity