Beispiel #1
0
        /// <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>();
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
 //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;
 }