Unity与C++网络游戏开发实战:基于VR、AI与分布式架构 【3.3】

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
  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值