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);
        }
    }
}

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

--若是對您有所幫助,世界便多了一份你我的溫暖
--您的支持將是我的動力,手有餘糧的話,一點點讚賞我將開心不已(一毛錢也是極好的) 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章