Exemple #1
0
        public IAssetAsynRequest LoadAsyn()
        {
            if (!CheckLoadStatus())
            {
                return(null);
            }
            IAssetAsynRequest asynRequest = new AssetAsynRequest();

            if (asset)
            {
                asynRequest.SetAsset(asset);
            }
            else
            {
                if (bundleLoader == null)
                {
                    string bundleName = ResourceSetting.GetBundleName(resID);
                    bundleLoader = resourceModule.GetBundleLoader(bundleName);
                }
                bundleLoader.LoadAsyn((bundle) =>
                {
                    StartCoroutine(LoadAsset((asset) =>
                    {
                        asynRequest.SetAsset(asset);
                    }));
                    // AppendCoroutine(LoadAsset(assetName,bundle,(asset)=>
                    // {
                    //  asynRequest.SetAsset(asset);
                    // }));
                });
            }
            return(asynRequest);
        }
        private IEnumerator LoadAssetBundle(Action <AssetBundle> onCacheFinished)
        {
            if (dependencies == null || dependencies.Length == 0)
            {
                dependencies = resourceModule.Manifest.GetAllDependencies(bundleName);
            }
            if (dependencies != null)
            {
                int dependenciesLoadedCount = 0;
                int dependenciesCount       = dependencies.Length;
                for (int i = 0; i < dependenciesCount; i++)
                {
                    AssetBundleLoader loader = resourceModule.GetBundleLoader(dependencies[i]);
                    loader.LoadAsyn((bundle) =>
                    {
                        dependenciesLoadedCount++;
                    });
                }
                while (dependenciesLoadedCount < dependenciesCount)
                {
                    yield return(null);
                }
            }
            AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(path);

            yield return(request);

            bundle = request.assetBundle;
            if (!bundle)
            {
                Debug.LogError("Bundle加载失败!");
            }
            LoadedCallback(onCacheFinished);
        }