示例#1
0
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <param name="proxy"></param>
        public void LoadAsset(AssetDataProxy proxy)
        {
            if (proxy == null)
            {
                return;
            }

            proxy.Data = GetAsset(proxy.Url);
            if (proxy.Data.IsLoaded)
            {
                proxy.AssetComplete();
                return;
            }

            Loader.Load(proxy);
        }
示例#2
0
        /// <summary>
        /// 进入下载状态
        /// </summary>
        /// <returns></returns>
        protected override IEnumerator OnLoading()
        {
            AssetDataProxy proxy = GetLoadProxy();

            if (proxy == null)
            {
                yield break;
            }

            // 正在加载
            if (proxy.Data.IsLoading)
            {
                while (!proxy.IsAbort && proxy.Data.IsLoading)
                {
                    yield return(1);
                }
                if (proxy.IsAbort)
                {
                    yield break;
                }

                proxy.AssetComplete();
                yield break;
            }

            // 排队等待
            while (!HasAccess && !proxy.IsAbort)
            {
                yield return(1);
            }
            if (proxy.IsAbort)
            {
                yield break;
            }

            // 再次检测
            if (proxy.Data.IsLoading)
            {
                while (!proxy.IsAbort && proxy.Data.IsLoading)
                {
                    yield return(1);
                }
                if (proxy.IsAbort)
                {
                    yield break;
                }

                proxy.AssetComplete();
                yield break;
            }

            // 加载完成
            if (proxy.Data.IsLoaded)
            {
                proxy.AssetComplete();
                yield break;
            }

            // 开始加载
            IncreaseLoadingWork();
            CoroutineUtil.StartCoroutine(OnDownload(proxy));
            DecreaseLoadingWork();

            proxy.AssetComplete();
        }