Example #1
0
        public Res LoadRes(ResSearchKeys resSearchKeys)
        {
            var res = GetResFromCache(resSearchKeys);

            if (res != null)
            {
                if (res.State == ResState.Loaded)
                {
                    return(res);
                }

                if (res.State == ResState.Loading)
                {
                    // 正在做异步加载
                    res.StopLoadAsyncTask();

                    res.Load();

                    return(res);
                }

                if (res.State == ResState.NotLoad)
                {
                    throw new Exception(string.Format("{0} 状态异常 {1}", resSearchKeys, res.State));
                }
            }

            // 如果都未记录,则通过 ResFactory.Create 创建资源
            res = ResFactory.Create(resSearchKeys);

            if (res == null)
            {
                return(null);
            }

            // 记录到资源共享池中
            ResMgr.Instance.AddRes(res);

            // 添加到 ResLoader 以加载的列表
            Add2LoadedReses(res);

            // 做加载操作
            res.Load();

            return(res);
        }
Example #2
0
        public void LoadResAsync(ResSearchKeys resSearchKeys, Action <bool, Res> onLoad)
        {
            var res = GetResFromCache(resSearchKeys);

            if (res != null)
            {
                if (res.State == ResState.Loaded)
                {
                    onLoad(true, res);
                }
                else if (res.State == ResState.Loading)
                {
                    // 有可能正在进行着异步加载,直接注册即可。
                    res.RegisterOnLoadEventOnce(onLoad);
                }
                else
                {
                    Debug.LogErrorFormat("{0} 状态异常 {1}", resSearchKeys, res.State);
                    onLoad(false, null);
                }

                return;
            }

            // 如果都未记录,则通过 ResFactory.Create 创建资源
            res = ResFactory.Create(resSearchKeys);

            if (res == null)
            {
                onLoad(false, null);
                return;
            }

            // 记录到资源共享池中
            ResMgr.Instance.AddRes(res);

            // 添加到 ResLoader 以加载的列表
            Add2LoadedReses(res);
            // 注册加载的事件
            res.RegisterOnLoadEventOnce(onLoad);
            // 做加载操作
            res.LoadAsync();
        }