/// <summary> /// 异步加载资源包 /// </summary> /// <param name="assetBundleName">要加载的资源包的名称。</param> /// <param name="loadAssetBundleCallbacks">加载回调函数。</param> /// <param name="userData">自定义数据。</param> public void LoadAssetBundle(string assetBundleName, LoadAssetBundleCallbacks loadAssetBundleCallbacks, object userData) { if (IsLoadResourceReady) { m_ResourceManager.LoadAssetBundle(assetBundleName, loadAssetBundleCallbacks, userData); } else { if (m_LoadedAssetBundleDic.ContainsKey(assetBundleName)) { if (loadAssetBundleCallbacks != null) { if (loadAssetBundleCallbacks.LoadAssetBundleSuccessCallback != null) { loadAssetBundleCallbacks.LoadAssetBundleSuccessCallback(assetBundleName, GetAssetBundle(assetBundleName), 0, userData); } } return; } if (m_LoadingAssetList.ContainsKey(assetBundleName)) { return; } m_LoadingAssetList.Add(assetBundleName, loadAssetBundleCallbacks); string filePath = Utility.Path.GetCombinePath(m_ResourceManager.ReadWritePath, Utility.Path.GetResourceNameWithSuffix(assetBundleName)); if (File.Exists(filePath)) { filePath = Utility.Path.GetRemotePath(m_ResourceManager.ReadWritePath, Utility.Path.GetResourceNameWithSuffix(assetBundleName)); } else { filePath = Utility.Path.GetRemotePath(m_ResourceManager.ReadOnlyPath, Utility.Path.GetResourceNameWithSuffix(assetBundleName)); } StartCoroutine(LoadAssetBundleCo(assetBundleName, filePath, loadAssetBundleCallbacks, userData)); } }
public ListLoader(LoadMode mode = LoadMode.SingleCoroutineMode, LoadAssetCallbacks loadAssetCallbacks = null) { m_mode = mode; m_loadAssetCallbacks = new LoadAssetCallbacks( loadAssetSuccessCallback : delegate(string assetName, object asset, float duration, object userData) { Log.Info("ListLoader :asset(" + assetName + ") load success"); loadAssetCallbacks.LoadAssetSuccessCallback(assetName, asset, duration, userData); CallbackOneLoadFinished(true); }, loadAssetFailureCallback : delegate(string assetName, LoadResourceStatus status, string errorMessage, object userData) { Log.Info("ListLoader :asset (" + assetName + ")load failure: " + errorMessage); CallbackOneLoadFinished(true); }); m_loadAssetBundleCallbacks = new LoadAssetBundleCallbacks( loadAssetBundleSuccessCallback : delegate(string assetName, object asset, float duration, object userData) { Log.Info("ListLoader :asset bundle(" + assetName + ") load success"); loadAssetCallbacks.LoadAssetSuccessCallback(assetName, asset, duration, userData); CallbackOneLoadFinished(true); }, loadAssetBundleFailureCallback : delegate(string assetName, LoadResourceStatus status, string errorMessage, object userData) { Log.Info("ListLoader :asset bundle(" + assetName + ")load failure: " + errorMessage); CallbackOneLoadFinished(true); }); if (m_mode == LoadMode.SingleCoroutineMode) { m_CurFreeCoroutineNum = 1; } else { m_MaxCoroutineNum = GameEntry.GetComponent <ResourceComponent>().LoadResourceAgentHelperCount; m_CurFreeCoroutineNum = m_MaxCoroutineNum; } m_NeedLoadDic = new List <string>(); }
/// <summary> /// 非框架托管式资源包加载 /// </summary> /// <param name="assetBundleName">资源包名称。</param> /// <param name="fileUri">资源包文件路径。</param> /// <param name="loadAssetBundleCallback">加载回调函数。</param> /// <returns></returns> private IEnumerator LoadAssetBundleCo(string assetBundleName, string fileUri, LoadAssetBundleCallbacks loadAssetBundleCallbacks, object userData) { WWW www = new WWW(fileUri); yield return(www); AssetBundle assetBundle = www.assetBundle; string errorMessage = www.error; www.Dispose(); if (loadAssetBundleCallbacks != null) { if (string.IsNullOrEmpty(errorMessage) && assetBundle != null) { m_LoadedAssetBundleDic.Add(assetBundleName, assetBundle); if (loadAssetBundleCallbacks.LoadAssetBundleSuccessCallback != null) { loadAssetBundleCallbacks.LoadAssetBundleSuccessCallback(assetBundleName, assetBundle, 0, userData); } } else { if (loadAssetBundleCallbacks.LoadAssetBundleFailureCallback != null) { loadAssetBundleCallbacks.LoadAssetBundleFailureCallback(assetBundleName, LoadResourceStatus.NotExist, errorMessage, userData); } } } m_LoadingAssetList.Remove(assetBundleName); }
//NOWGF /// <summary> /// 异步加载AssetBundle /// </summary> /// <param name="assetBundleName"></param> /// <param name="loadAssetBundleCallbacks"></param> /// <param name="userData"></param> public void LoadAssetBundle(string assetBundleName, LoadAssetBundleCallbacks loadAssetBundleCallbacks, object userData) { // Do nothing in editor resource mode. }
public LoadAssetBundleTask(string assetBundleName, ResourceInfo resourceInfo, LoadAssetBundleCallbacks loadAssetBundleCallbacks, string resourceChildName, object userData) : base("", assetBundleName, resourceInfo, null, null, resourceChildName, userData) { m_LoadAssetBundleCallbacks = loadAssetBundleCallbacks; }