Ejemplo n.º 1
0
        /// <summary>
        /// 加载Bundle
        /// </summary>
        /// <param name="assetName"></param>
        /// <param name="onComplete"></param>
        /// <param name="isSub"></param>
        internal static void LoadBundle(string assetName, UseGameObjectAssetDelegate onComplete, bool isSub)
        {
            if (!instance.data.assetBundlePath.ContainsKey(assetName))
            {
                Debug.LogWarning("--Toto-- AssetBundleLoadManager->UseGameObjectAsset: '" + assetName + "' asset does not exist.");
                return;
            }
            // 判断回收站
            if (instance.mRecycleBundleCached.ContainsKey(assetName))
            {
                var list = instance.mRecycleBundleCached[assetName];
                if (list.Count > 0)
                {
                    Bundle bundleInstantiate = list.Dequeue();
                    bundleInstantiate.gameObject.SetActive(true);
                    if (onComplete != null)
                    {
                        onComplete(assetName, bundleInstantiate);
                    }
                    return;
                }
            }
            // 判断缓存
            if (instance.mAssetCached.ContainsKey(assetName))
            {
                Bundle b = (Bundle)instance.mAssetCached[assetName];
                if (b != null)
                {
                    if (onComplete != null)
                    {
                        onComplete(assetName, InstantiateBundle(b));
                    }
                }
                return;
            }
            AssetLoadRequest loadRequest = (AssetLoadRequest)FindLoadRequestByName(assetName);

            if (loadRequest != null)
            {
                instance.mAssetLoadRequestWaitList.Add(new AssetLoadRequestWait()
                {
                    assetName = assetName, onComplete = onComplete
                });
                return;
            }

            string           abPath        = instance.data.assetBundlePath[assetName];
            AssetLoadRequest abLoadRequest = new AssetLoadRequest();

            abLoadRequest.assetName  = assetName;
            abLoadRequest.onComplete = onComplete;
            abLoadRequest.isSub      = isSub;
            instance.mAssetLoadRequestList.Add(abLoadRequest);      // 添加至资源请求list
            instance.StartCoroutine(instance.LoadAssetBundle(abPath, abLoadRequest));
        }
        /// <summary>
        /// 加载Bundle
        /// </summary>
        /// <param name="assetName"></param>
        /// <param name="onComplete"></param>
        /// <param name="isSub"></param>
        internal static void LoadBundle(string assetName, UseGameObjectAssetDelegate onComplete, bool isSub)
        {
            if (!instance.data.assetBundlePath.ContainsKey(assetName))
            {
                Debug.LogWarning("--Toto-- AssetBundleLoadManager->UseGameObjectAsset: '" + assetName + "' asset does not exist.");
                return;
            }
            // 判断回收站
            if (instance.mRecycleBundleCached.ContainsKey(assetName))
            {
                var list = instance.mRecycleBundleCached[assetName];
                if (list.Count > 0)
                {
                    Bundle bundleInstantiate = list.Dequeue();
                    bundleInstantiate.gameObject.SetActive(true);
                    if (onComplete != null)
                        onComplete(assetName, bundleInstantiate);
                    return;
                }
            }
            // 判断缓存
            if (instance.mAssetCached.ContainsKey(assetName))
            {
                Bundle b = (Bundle)instance.mAssetCached[assetName];
                if (b != null)
                {
                    if (onComplete != null)
                        onComplete(assetName, InstantiateBundle(b));
                }
                return;
            }
            AssetLoadRequest loadRequest = (AssetLoadRequest)FindLoadRequestByName(assetName);
            if (loadRequest != null)
            {
                instance.mAssetLoadRequestWaitList.Add(new AssetLoadRequestWait() { assetName = assetName, onComplete = onComplete });
                return;
            }

            string abPath = instance.data.assetBundlePath[assetName];
            AssetLoadRequest abLoadRequest = new AssetLoadRequest();
            abLoadRequest.assetName = assetName;
            abLoadRequest.onComplete = onComplete;
            abLoadRequest.isSub = isSub;
            instance.mAssetLoadRequestList.Add(abLoadRequest);      // 添加至资源请求list
            instance.StartCoroutine(instance.LoadAssetBundle(abPath, abLoadRequest));
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 使用GameObject资源
 /// </summary>
 /// <param name="assetName"></param>
 /// <param name="onComplete"></param>
 public static void UseGameObjectAsset(string assetName, UseGameObjectAssetDelegate onComplete)
 {
     LoadBundle(assetName, onComplete, false);
 }
 /// <summary>
 /// 使用GameObject资源
 /// </summary>
 /// <param name="assetName"></param>
 /// <param name="onComplete"></param>
 public static void UseGameObjectAsset(string assetName, UseGameObjectAssetDelegate onComplete)
 {
     LoadBundle(assetName, onComplete, false);
 }