9.5 加载和管理AssetBundle资源
9.4节中学习了AssetBundle的资源组成方式,了解了如何开发一个AssetBundle的资源打包工具。本节将讲解加载和管理AssetBundle的方法。
AssetBundle是由单个或者多个依赖资源组成的资源。在9.4节的学习中,大家了解了ResourceManager对于资源的动态加载方式。本节就来学习依赖资源的管理和存储。
在这个系统中,使用了一种叫做“引用计数”的内存资源管理方式。在引用计数中,需要指定一个对象,它负责每个对象引用次数的计数功能。其实原理很简单,就是一个对象的引用每指向一个新的引用,对它的引用计数就增加一次;销毁一个引用,它的引用计数就减少一次。管理器如果检测到引用计数到了0次,就销毁这个资源的对象和内存。
正确使用引用计数的3个规则:
·在返回之前需要调用AddRef。需要使用这个指针的接口时,在函数返回之前先调用一次AddRef,因为在接口调用结束时会对这个引用的栈产生一次销毁,所以需要先记录一次调用。
·当这个接口使用结束的时候需要调用Release函数。在接口使用结束时减去这个引用的计数。
·复制完以后需要调用AddRef。在另外一个地方调用这个指针时先调用AddRef,在建立接口的另外一个引用之后应增加相应组件的引用计数。
部分代码示例如下:
//ResourceAllocater.cs 资源引用计数和加载标记管理
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace FintolClient
{
pub