Example #1
0
        private IEnumerator LoadAsyncImpl(LoadRequest request, Func <string, object> syncLoadFunc)
        {
            var req = Task.Run(() =>
            {
                try
                {
                    return(syncLoadFunc(_rootPath + "/" + request.fileName));
                }
                catch (Exception e)
                {
                    return(e);
                }
            });

            yield return(req);

            if (req.Result is Exception)
            {
                request.SetError((req.Result as Exception).Message);
            }
            else
            {
                request.SetResult(req.Result);
            }
        }
        private IEnumerator LoadObjectImpl(LoadRequest request)
        {
            string assetName;
            string fileName = SplitFileName(request.fileName, out assetName);

            var req1 = abl.LoadAssetBundle(_rootpath + fileName);

            yield return(req1);

            if (req1.Error != null)
            {
                request.SetError(req1.Error);
                yield break;
            }

            var assetBundle = req1.Result;

            if (assetBundle.isStreamedSceneAssetBundle)
            {
                request.SetError("Cannot loadAsset from StreamedSceneAssetBundle");
                yield break;
            }

            var req2 = (string.IsNullOrEmpty(assetName))
                    ? assetBundle.LoadAllAssetsAsync(request.assetType)
                    : assetBundle.LoadAssetAsync(assetName, request.assetType);

            yield return(req2);

            var asset = req2.asset;

            if (asset == null)
            {
                request.SetError("AssetBundle.LoadAssetAsync failed");
            }
            else
            {
                request.SetResult(asset);
            }
        }
        private IEnumerator LoadAssetbundle(LoadRequest request)
        {
            var req1 = abl.LoadAssetBundle(_rootpath + "/" + request.fileName);

            yield return(req1);

            if (req1.Error != null)
            {
                request.SetError(req1.Error);
                yield break;
            }

            request.SetResult(req1.Result);
        }
Example #4
0
        public virtual ILoadRequest <T> LoadAsset <T>(string fileName) where T : class
        {
            var request = new LoadRequest <T>(fileName);

            if (string.IsNullOrEmpty(_rootPath))
            {
                Log.Error("[LoadManager] You should Do LoadManager.SetRootPath() First!");
                return(request);
            }

            foreach (var loader in _loaders)
            {
                if (loader.Invoke(request))
                {
                    return(request);
                }
            }

            request.SetError($"[LoadManager] Has no loader to load the typeof: <{typeof(T)}>");
            return(request);
        }