123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using UnityEngine;
- using System.Collections.Generic;
- using CommonUnity3D.MFUnity.LoadUtil;
- using System;
- namespace CommonAIClient.Unity.Utils
- {
- /// <summary>
- /// 载入一个资源
- /// </summary>
- public class AssetLoader
- {
- private string mAssetBundleName;
- private string mAssetName;
- private Action<bool, UnityEngine.Object, MFUnityAssetBundle> mCallback;
- private bool mASyncLoadAB;
- private bool mASyncLoadAsset;
- //工具
- private List<string> mDeps;
- private int mDepsLoadIndex;
- /// <summary>
- ///
- /// </summary>
- /// <param name="assetBundleName"></param>
- /// <param name="assetName"></param>
- /// <param name="callback arg1 是否加载成功, arg2 资源, arg3 所属AB"></param>
- /// <param name="bASyncLoadAB"></param>
- /// <param name="bASyncLoadAsset"></param>
- public AssetLoader(string assetBundleName, string assetName,
- Action<bool, UnityEngine.Object, MFUnityAssetBundle> callback,
- bool bASyncLoadAB = true, bool bASyncLoadAsset = true)
- {
- if (callback == null)
- {
- Debug.LogError("callback == null");
- return;
- }
- if (string.IsNullOrEmpty(assetBundleName) || string.IsNullOrEmpty(assetName))
- {
- Debug.LogError("string.IsNullOrEmpty(assetBundleName) || string.IsNullOrEmpty(assetName)");
- callback(false, null, null);
- return;
- }
-
- mAssetBundleName = assetBundleName;
- mAssetName = assetName;
- mCallback = callback;
- mASyncLoadAB = bASyncLoadAB;
- mASyncLoadAsset = bASyncLoadAsset;
- mDeps = MFUnityAssetBundleManager.GetInstance().GetDepList(mAssetBundleName);
- LoadDeps(mDepsLoadIndex);
- }
- public void ForeachDepFile(System.Action<string> action)
- {
- foreach (var elem in mDeps)
- {
- action(elem);
- }
- }
- private void DepsCallback(string name, UnityEngine.Object o, object userdata, bool isLoadOK)
- {
- LoadDeps(++mDepsLoadIndex);
- }
- void LoadDeps(int index)
- {
- //加载完毕
- if (mDeps.Count == mDepsLoadIndex)
- {
- MFUnityAssetBundleManager.GetInstance().GetAssetBundle(mAssetBundleName
- , (ab) =>
- {
- if (mCallback != null)
- {
- if (ab == null)
- {
- Debug.LogError("AB " + mAssetBundleName + " NOT EXIST");
- mCallback(false, null, null);
- return;
- }
- ab.GetAsset(mAssetName, mASyncLoadAsset, (name_, res_, userdata_, succ_) =>
- {
- if (mCallback != null)
- {
- mCallback(succ_, res_, ab);
- }
- }, null);
- }
- }, mASyncLoadAB);
- return;
- }
- MFUnityAssetBundleManager.GetInstance().LoadDep(mDeps[mDepsLoadIndex], mASyncLoadAB, mASyncLoadAsset, DepsCallback, null, mAssetBundleName);
- }
- }
- }
|