热更新的前置模块:AB管理器

news/2024/5/18 14:27:18 标签: 游戏, 个人开发, 游戏程序, cocos2d

引言

本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。

前面的文章给大家介绍了手敲Cocos独立游戏开发框架中常用到的UI管理器和资源管理器,为了减少包体的大小,我们需要引入热更新的模块,但是热更新的前提是把资源打成AssetBundle(简称AB),本文笔者给大家介绍一下AB和AB管理器。

本文源码和源工程在文末获取,小伙伴们自行前往。

什么是AB管理器?

AssetBundle(资源包)是Cocos游戏引擎中用于管理和打包资源的一种机制。使用AssetBundle可以优化游戏的内存使用,提高加载速度,并允许游戏开发人员将资源按需加载,以减小初始加载时间和减少内存占用。

AB管理器固然是管理众多AB资源的管理器。

AB管理器的主要作用和功能

AssetBundle(AB)管理器是一种用于管理和加载AssetBundle的工具,通常在游戏引擎中使用。其主要作用和功能包括:

  1. 资源加载与释放: AB管理器允许游戏在运行时动态加载AssetBundle中的资源,以及在不再需要时释放这些资源。这有助于减小游戏内存占用,提高性能。
  2. 异步加载: AB管理器通常支持异步加载,这意味着游戏可以继续运行而不会被资源加载阻塞。这对于确保游戏流畅性很重要。
  3. 资源依赖关系: AB管理器可以处理AssetBundle之间的依赖关系,确保在加载一个AssetBundle时,其所依赖的其他AssetBundle也会被正确加载。
  4. 资源缓存: AB管理器通常会在内存中维护一个资源缓存,以便在需要时快速访问已加载的资源,而不必重新加载。
  5. 资源热更新: AB管理器通常用于实现游戏的热更新功能,允许在不重新发布游戏的情况下更新游戏内容。
  6. 资源加载优化: AB管理器可以帮助优化资源加载顺序,确保在游戏运行时仅加载当前场景或关卡所需的资源,从而提高加载速度和节省内存。

总的来说,AB管理器是游戏引擎中的一个重要工具,用于有效地管理游戏中的资源,以提高性能、降低内存占用,并实现资源的动态加载和卸载。这对于大型游戏和需要频繁更新资源的游戏特别有用。不同的游戏引擎可能提供不同的AB管理器实现,但其基本功能通常是相似的。

构建AB管理器

1.声明AB管理器

声明AssetBundleManager,单例类。包含一个已经放置加载好的AssetBundle的Map。

2.加载AB方法

核心接口是cc.assetManager.loadBundle,用于加载AB。

3.卸载AB方法

核心接口是bundle.releaseAll(),用于卸载AB。保持良好的编码习惯,不用了就释放。

4.改造资源管理器

资源状态新增bundle,用于保存加载好的AB。

通过改造前面文章介绍的资源管理器,加载资源通过加载AB的方式。

同样的把释放资源的方法也改造一下。通过AB管理器释放AB。

5.准备测试资源

将演示用的预制体从resources移动到bundle下。

选择Prefab目录,将配置为Bundle开启,然后应用。这样Prefab下的预制体将会被打成AB。

6.编写测试代码

测试代码和前面资源管理器文章一样,没有变化。

7.测试结果

测试结果和前面资源管理器文章一样,没有变化。

还有更高级的AB管理器吗?

  1. 资源版本控制:为了确保游戏的稳定性和一致性,你可以实现资源版本控制。这包括为每个Asset Bundle 分配版本号,以及在热更新时验证版本。可以使用文件哈希或其他方法来管理版本控制。

  2. 资源依赖关系管理:当资源之间存在依赖关系时,确保正确加载和释放这些资源是至关重要的。你可以创建一个依赖图,以跟踪资源之间的依赖关系,并在加载或卸载时处理它们。

  3. 资源缓存策略:优化资源加载和内存使用的缓存策略是必要的。你可以实现LRU(Least Recently Used)或其他缓存算法来管理已加载的资源,以及决定何时释放不再使用的资源。

  4. 异步加载和并行加载:优化加载性能,使得游戏可以同时加载多个Asset Bundle 或资源,以减少加载时间。

  5. 热更新策略:实现更复杂的热更新策略,包括增量热更新、全量热更新、资源差分包等,以减少热更新的带宽和时间成本。

  6. 资源加密和安全性:保护你的资源不被非法访问或盗用,可以实现资源的加密和解密机制,以及安全校验机制。

  7. 资源分包和按需加载:将资源分成多个小的Asset Bundle,以便按需加载,减少初始加载时间和内存占用。

  8. 资源预加载管理:实现更复杂的资源预加载策略,可以根据玩家行为、游戏进度等动态地预加载资源,以提高玩家体验。

总结

本文的重点内容主要有以下几点,不知道小伙伴们是否已经理解:

  • 本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。
  • AB管理器的简介、主要作用和功能。
  • AB管理器的升级方案。
  • 源码通过关注“亿元程序员”发送"AssetBundleManager"获取。

AD:笔者已经上线的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。

感兴趣的小伙伴记得关注"亿元程序员"哦,一位有着8年游戏行业经验的主程。学习游戏开发不迷路。感谢您的关注,希望能给到您帮助, 也希望通过您能帮助到大家。

喜欢的可以点个、点个在看哦!请把该文章分享给你觉得有需要的其他小伙伴。谢谢。


http://www.niftyadmin.cn/n/5045174.html

相关文章

Maven官方镜像仓库与阿里云云效Maven

一、Maven官方镜像仓库 download maven-3 右击复制链接地址,使用wget命令直接在linux中下载: wget 链接地址history 二、阿里云云效Maven 详情查看maven 配置指南 打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/…

选择需求管理工具

如果你在2022年寻找管理需求的新方法,但不确定从何入手,那么选择一款现代化的需求管理工具可能是正确的下一步。越来越多的组织开始探索并采纳那些能够管理设计联接系统所带来的复杂性的产品开发解决方案。 需求是使流程顺畅运行的基础,也是…

调整网络时需要注意的事项

这段时间调整网络,涉及的计算机多,Vlan也多,不小心的动作会给自己造成很大的麻烦,因为毕竟我也只是一个网络的初学者,平时虽然是网管,只是作为一项普通的工作。 准备工作做得不细致,可能出现的问…

Avl树(有详细图解)

目录 介绍 引入 概念 特点 模拟实现 思路 插入 旋转 左旋 无子树 有子树 右旋 无子树 有子树 左右旋 引入(也就是有子树版本的抽象图解) 解决方法(也就是左右旋) 总结 无子树(也就是curright的位置就是newnode) 有子树 模型高度解释 旋转 更新三个…

6.3 应用动态内存补丁

动态内存补丁可以理解为在程序运行时动态地修改程序的内存,在某些时候某些应用程序会带壳运行,而此类程序的机器码只有在内存中被展开时才可以被修改,而想要修改此类应用程序动态补丁将是一个不错的选择,动态补丁的原理是通过Crea…

代码随想录算法训练营第59天|503. 下一个更大元素 II,42. 接雨水

链接: 503. 下一个更大元素 II 链接: 42. 接雨水 503. 下一个更大元素 II 关于循环数组的解题方法: 直接扩充数组至两倍大小 example: [1, 2, 1] -> [1, 2, 1, 1, 2, 1]下标取模避免数组越界:i % nums.length class Solution {public int[] nextG…

以太坊智能合约的历史里程碑: 从DAO到数据隐私的技术演进

文章目录 系列文章目录前言一、时间线 项目介绍总结 前言 在短短的几年内,以太坊不仅成为了去中心化应用和智能合约的主导平台,而且也见证了区块链技术和应用的多次重大革命。本文详细回顾了自2016年至今,以太坊生态所经历的几个关键时刻与技…

论文精读ResNet: Deep Residual Learning for Image Recognition

1 基础背景 论文链接:https://arxiv.org/abs/1512.03385 Github链接:https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py 知乎讲解:ResNet论文笔记及代码剖析 2 Motivation 对于深度神经网络来说,深…