unity-资源加载和卸载流程梳理

(一)最近整理资源加载和卸载,梳理了下思路画了自认为的流程图
本框架中共3块组成:对象池,资源池(AssetBundle加载出的Asset的中间管理类),AssetBundleManager(这块主要是打包的时候已经决定配置好了各个Asset间的依赖关系,与此文的关系不大,后面整理一键打包再细说)
1.同步加载同步关于Instantiate的小解释:
你 Instaniate一个Prefab,是一个对Assets进行Clone(复制)+引用结合的过程,GameObject transform
是Clone是新生成的。其他mesh / texture / material / shader等,这其中些是纯引用的关系的,包括:Texture和TerrainData,还有引用和复制同时存在的,包括:Mesh/material/PhysicMaterial。引用的Asset对象不会被复制,只是一个简单的指针指向已经Load的Asset对象。这种含糊的引用加克隆的混合,大概是搞糊涂大多数人的主要原因。
2.卸载
在这里插入图片描述3.异步加载
在这里插入图片描述详细解释如下:
AssetBundleManager

负责编辑器下生成的依赖数据的管理负责加载资源的时候资源Ab和依赖项的加载负责资源卸载的时候资源Ab和依赖Ab的卸载

划重点

加载资源Ab的时候,一定要先加载依赖项卸载资源Ab的时候也要卸载引用计数为0的Ab,引用计数的管理比较重要。Emm

ResourceManager

正如其名,负责资源文件的同步加载,异步加载,预加载。这里我们只负责把文件加载到内存中,实例化的操作由ObjectManager负责。负责对加载过的资源做资源缓存对卸载的资源做回收资源的管理对ObjectManager的分装类对象做二次处理赋值,因为从加载对象还是要用ResManager来加载。异步加载的管理,维护按照优先级排序的异步加载列表。异步加载的取消

划重点

设计到的中间传递类较多,不好管理小心处理每一个函数,不恰当的管理很容易内存泄漏类对象池和资源池对象回收的重置处理异步分帧的尺度把握池大小的尺度把握

ObjectManager

主要负责需要实例化的Gamobject资源的同步加载,异步加载和预加载。负责对已经加载资源做池管理

下面附上框架测试代码:
切记自己动手调试,多思考总结
链接: https://pan.baidu.com/s/1B7L5aj4e2jj-Bgfl4pzB8A 提取码: 7wai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值