Esempio n. 1
0
        /// <summary>
        /// 加载
        /// </summary>
        static private ResRef LoadResByUrl <T>(string url, string resName, ResLoadCompleteDelegate onComplete, IResDesc resDesc, bool holdbundle = false) where T : ResBase, new()
        {
            // 查找
            var res = FindRes(url);

            if (null == res)
            {
                res = new T();
                res.Init(url, resName, holdbundle);
            }
            else
            {
                // 从空闲列表移除
                if (res.refCount <= 0)
                {
                    _unusedResources.Remove(res);
                }

                if (res.isLoaded)
                {
                    var Ref = ResRef.Create(res, onComplete, resDesc);
                    Ref.OnComplete();
                    return(Ref);
                }
            }

            var r = ResRef.Create(res, onComplete, resDesc);

            // 加入列表
            _loader.Push(r);
            return(r);
        }
Esempio n. 2
0
        /// <summary>
        /// 创建
        /// </summary>
        public static ResRef Create(ResBase res, ResLoadCompleteDelegate onComplete, IResDesc resDesc)
        {
            ResRef r = new ResRef(res, onComplete, resDesc);

            if (null != r._res)
            {
                r._res.IncRef();
            }
            return(r);
        }
Esempio n. 3
0
        /// <summary>
        /// 添加回调(空资源引用)
        /// </summary>
        /// <param name="onComplete"></param>
        /// <returns></returns>
        static public ResRef PushDelegate(ResLoadCompleteDelegate onComplete)
        {
            var r = ResRef.Create(null, onComplete, null);

            if (r.res == null)
            {
                r.OnComplete();
            }
            else
            {
                _loader.Push(r);
            }
            // 重置进度
            _loader.ResetProgress();

            return(r);
        }
Esempio n. 4
0
        /// <summary>
        /// 加载
        /// </summary>
        static public ResRef LoadScene(string name, ResLoadCompleteDelegate onComplete)
        {
            var url = PathToUrl(name, ResType.Scene);

            return(LoadResByUrl <ResScene>(url, name, onComplete, null));
        }
Esempio n. 5
0
 private ResRef(ResBase res, ResLoadCompleteDelegate onComplete, IResDesc resDesc)
 {
     _res        = res;
     _onComplete = onComplete;
     _resDesc    = resDesc;
 }
Esempio n. 6
0
 /// <summary>
 /// 取消回调
 /// </summary>
 public void         RemoveCallback()
 {
     _onComplete = null; _resDesc = null;
 }