Ejemplo n.º 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);
            }
        }
Ejemplo n.º 2
0
        private IEnumerator LoadSprite_Async(LoadRequest rRequest)
        {
            if (string.IsNullOrEmpty(this.mSpriteName))
            {
                this.Image.sprite = null;
                rRequest.SetResult(rRequest);
                yield break;
            }

            var rLoadRequest = UIAtlasManager.Instance.LoadSprite(this.mSpriteName);

            yield return(rLoadRequest);

            if (rLoadRequest == null || rLoadRequest.Result == null || rLoadRequest.Result.Sprite == null)
            {
                Debug.LogErrorFormat("not find sprite: {0}", this.SpriteName);
                this.Image.sprite = null;
                rRequest.SetResult(rRequest);
                yield break;
            }
            this.Image.sprite = rLoadRequest.Result.Sprite;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }