AssetBundle框架辅助类之ABManifestLoader

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ABManifestLoader : System.IDisposable
{
    AssetBundleManifest _ManifestObj;
    string _ManifestPathStr;//清单文件路径
                            
    private AssetBundle _ABReadMainfest;//读取AB清单文件的AssetBundle

    private ABManifestLoader instance;
    public ABManifestLoader GetInstance()
    {
        if (instance == null)
        {
            instance = new ABManifestLoader();
        }
        return instance;
    }

    public ABManifestLoader()
    {
        _ManifestPathStr = PathTools.GetABOutPath() + "/" + PathTools.GetPlatformName(); ;
        _ABReadMainfest = null;
    }


    /// <summary>
    /// 加载Manifest清单文件
    /// </summary>
    /// <returns></returns>
    public bool LoadManifestObj()
    {
        _ABReadMainfest = AssetBundle.LoadFromFile(_ManifestPathStr);
        _ManifestObj = _ABReadMainfest.LoadAsset<AssetBundleManifest>("AssetbundleManifest");
        if (_ManifestObj == null)
        {
            Debug.LogError(GetType() + "/LoadMainfestFile()/www下载出错,请检查_StrManifestPath=" + _ManifestPathStr );
            return false;
        }
        else
        {
            return true;
        }
    }


    /// <summary>
    /// 获取AssetBundleManifest 系统类实例
    /// </summary>
    /// <returns></returns>
    public AssetBundleManifest GetABManifest()
    {
        if (_ManifestObj != null)
        {
            return _ManifestObj;
        }
        else
        {
            Debug.LogError(GetType() + "/LoadManifestObj()/出错,_ManifestObj=null,请检查:");

        }
        return null;
    }


    /// <summary>
    ///  //获取所有的Asset Bundle Manifest依赖项
    /// </summary>
    /// <param name="abname">指定包名称</param>
    /// <returns></returns>
    public string[] GetAllDepences(string abname)
    {
        if (_ManifestObj != null && !string.IsNullOrEmpty(abname))
        {
            return _ManifestObj.GetAllDependencies(abname);
        }
        return null;
    }

    public void Dispose()
    {
        if (_ABReadMainfest != null)
        {
            _ABReadMainfest.Unload(true);
        }
    }
}

-------------------------

--若是对您有所帮助,世界便多了一份你我的温暖
--您的支持将是我的动力,手有余粮的话,一点点赞赏我将开心不已(一毛钱也是极好的) 

猜你喜欢

转载自blog.csdn.net/weixin_41995872/article/details/105456088