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 异步加载资源并进行实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值