当前位置: 首页 > news >正文

AB包资源管理器

简介

ABMgr(Asset Bundle Manager)类是一个用于管理 Unity 中 AssetBundle 资源加载的管理器。它通过字典缓存和管理加载的 AB 包,同时支持同步和异步加载。还包含了卸载和清理 AB 包的方法。

功能解析:

  1. 主包加载与依赖管理

    • 主包加载:通过 LoadMainAB() 加载主包,并使用 AssetBundleManifest 记录 AB 包之间的依赖关系。
    • 依赖包加载:通过 LoadDependencies() 方法,能够自动加载 AB 包的依赖项,确保目标 AB 包及其依赖项被正确加载。
  2. 字典缓存 AB 包

    • 使用 Dictionary<string, AssetBundle> abDic 来存储已加载的 AB 包,防止重复加载带来的错误和性能浪费。
  3. 资源加载

    • 提供了泛型Type名称三种资源加载方式,支持同步和异步两种模式。
    • 异步加载使用协程,通过 AssetBundle.LoadFromFileAsyncAssetBundleRequest 来实现异步资源加载,并且通过 UnityAction<T> 回调函数将结果返回给调用方。
  4. 协程机制

    • 使用 StartCoroutine 来异步加载资源。协程函数会在加载过程中持续等待,直到 AB 包和资源加载完成,才返回给调用者。
  5. 资源卸载与清理

    • UnLoadAB(string name) 用于卸载特定的 AB 包。
    • ClearAB() 可以卸载所有 AB 包,同时清空字典缓存。
  6. 支持的平台

    • 根据不同的平台(PC、Android、iOS),MainName 会返回不同的主包名称,确保在多平台项目中的兼容性。

AssetBundle(AB包)解释

AB包介绍

将AssetBundle面板设置为下图

选中Browse

在项目下方创建AssetBundles文件夹

继续在AssetBundles文件夹下创建PC文件夹

选中PC

代码案例:

假设我们有一个名为 characters 的 AB 包,里面有一个名为 Hero 的预制体资源。我们想要异步加载并实例化该预制体。

代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ABMgrExample : MonoBehaviour
{GameObject obj;private void Start(){ABMgr.Instance.LoadResAsync<GameObject>("characters", "player", (ABObj) =>{obj = Instantiate(ABObj);Debug.Log(obj.gameObject.name);});Debug.Log("Start");}
}

解释:

  1. 加载预制体资源ABMgr.Instance.LoadResAsync<GameObject>("characters", "Hero", OnHeroLoaded) 会异步加载 characters AB 包中的 Hero 预制体。
  2. 回调函数:加载完成后,OnHeroLoaded 方法会被调用,heroPrefab 就是我们从 AB 包加载出来的资源。使用 Instantiate 来实例化这个预制体。

这个案例展示了如何利用 ABMgr 异步加载资源并进行实例化。

http://www.lryc.cn/news/465695.html

相关文章:

  • Centos7源报错问题
  • Openlayers高级交互(2/20):清除所有图层的有效方法
  • 黑马JavaWeb-day02
  • laravel清除不同缓存
  • 【Git】解决分支冲突、分支合并、版本回退、版本管理
  • linux file结构体与inode结构体
  • 探索迷宫的奥秘:用 C++ 打造你的迷宫游戏之旅!
  • JSON 注入攻击 API
  • MyBatis入门程序之客户添加、更新与删除
  • 查缺补漏----数据结构树高总结
  • jenkins添加新服务
  • 网络连接设备的功能与应用概述
  • 【SpringCloud】04-Gateway网关登录校验
  • FFmpeg 库的简要说明
  • Go:error处理机制
  • Python机器学习中的主成分分析(PCA)全面解析与应用
  • MySQL 安装和基本使用
  • RequestBody接收参数报错com.fasterxml.jackson.databind.exc.MismatchedInputException
  • 大数据治理的关键技术:构建稳固的数据基石
  • OS管理和进程的学习
  • Linux 部署 Harbor 镜像仓库详解
  • 怎么把flv格式转换成mp4?将flv格式换成MP4格式的简单方法
  • 原型模式和建造模式的区别
  • 最新 client-java 调用 k8s ApiServer
  • TCP单包数据大于1460字节会被拆包的问题
  • 苏宁关键字搜索接口技术解析与实战
  • Java学习教程,从入门到精通,Java 基本数据类型详解(5)
  • 使用Flask实现本机的模型部署
  • 基于SSM的校园跑腿网站的设计与实现
  • 【Java】正则表达式详解