示例#1
0
        public void Add2Load(string ownerBundle, string assetName, Action <bool, IRes> listener = null,
                             bool lastOrder = true)
        {
            if (string.IsNullOrEmpty(ownerBundle) || string.IsNullOrEmpty(assetName))
            {
                Log.E("Res Name Or Bundle Name Is Null.");
                return;
            }

            IRes res = FindResInArray(mResArray, ownerBundle, assetName);

            if (res != null)
            {
                if (listener != null)
                {
                    AddResListenerReward(res, listener);
                    res.RegisteResListener(listener);
                }

                return;
            }

            res = ResMgr.Instance.GetRes(ownerBundle, assetName, true);

            if (res == null)
            {
                return;
            }

            if (listener != null)
            {
                AddResListenerReward(res, listener);
                res.RegisteResListener(listener);
            }

            //无论该资源是否加载完成,都需要添加对该资源依赖的引用
            string[] depends = res.GetDependResList();

            if (depends != null)
            {
                for (int i = 0; i < depends.Length; ++i)
                {
                    Add2Load(depends[i]);
                }
            }

            AddRes2Array(res, lastOrder);
        }
示例#2
0
        public bool Add2Load(string name, Action <bool, IRes> listener = null, bool lastOrder = true)
        {
            if (string.IsNullOrEmpty(name))
            {
                Log.e("Res Name Is Null.");
                return(false);
            }

            IRes res = FindResInArray(m_ResArray, name);

            if (res != null)
            {
                if (listener != null)
                {
                    AddResListenerReward(res, listener);
                    res.RegisteResListener(listener);
                }
                return(true);
            }

            res = ResMgr.S.GetRes(name, true);

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

            if (listener != null)
            {
                AddResListenerReward(res, listener);
                res.RegisteResListener(listener);
            }

            //无论该资源是否加载完成,都需要添加对该资源依赖的引用
            string[] depends = res.GetDependResList();

            if (depends != null)
            {
                for (int i = 0; i < depends.Length; ++i)
                {
                    Add2Load(depends[i]);
                }
            }

            AddRes2Array(res, lastOrder);

            return(true);
        }
示例#3
0
        private void DoLoadAsync()
        {
            var nextNode = m_WaitLoadList.First;
            LinkedListNode <IRes> currentNode = null;

            while (nextNode != null)
            {
                currentNode = nextNode;
                IRes res = currentNode.Value;
                nextNode = currentNode.Next;
                if (res.IsDependResLoadFinish())
                {
                    m_WaitLoadList.Remove(currentNode);

                    if (res.resState != eResState.kReady)
                    {
                        res.RegisteResListener(OnResLoadFinish);
                        res.LoadAsync();
                    }
                    else
                    {
                        --m_LoadingCount;
                    }
                }
            }
        }
示例#4
0
        private void RequestUpdateImage()
        {
            if (m_Res != null)
            {
                m_Res.UnRegisteResListener(OnResLoadFinish);
                m_Res.SubRef();
                m_Res = null;
            }

            if (m_Image != null)
            {
                m_Image.enabled = false;
            }

            if (string.IsNullOrEmpty(m_Url))
            {
                return;
            }

            m_Res = ResMgr.Instance.GetRes(string.Format("NetImage:{0}", m_Url), true);
            m_Res.AddRef();

            m_Res.RegisteResListener(OnResLoadFinish);
            m_Res.LoadAsync();
        }
示例#5
0
        private void RequestUpdateImage()
        {
            if (m_PreRes != null)
            {
                m_PreRes.UnRegisteResListener(OnResLoadFinish);
                m_PreRes.SubRef();
                m_PreRes = null;
            }

            if (m_Res != null)
            {
                if (!m_HideWhenLoading)
                {
                    m_PreRes = m_Res;
                }
            }

            if (m_Image != null && m_PreRes == null)
            {
                m_Image.enabled = false;
            }

            if (string.IsNullOrEmpty(m_Url))
            {
                return;
            }

            m_Res = ResMgr.S.GetRes(string.Format("{0}{1}", m_PrefixKey, m_Url), true);
            m_Res.AddRef();

            m_Res.RegisteResListener(OnResLoadFinish);
            m_Res.LoadAsync();
        }
示例#6
0
        private void DoLoadAsync()
        {
            if (mLoadingCount == 0)
            {
                //ResMgr.Instance.timeDebugger.End();
                //ResMgr.Instance.timeDebugger.Dump(-1);
                if (mListener != null)
                {
                    Action callback = mListener;
                    mListener = null;
                    callback();
                }

                return;
            }

            var nextNode = mWaitLoadList.First;
            LinkedListNode <IRes> currentNode = null;

            while (nextNode != null)
            {
                currentNode = nextNode;
                IRes res = currentNode.Value;
                nextNode = currentNode.Next;
                if (res.IsDependResLoadFinish())
                {
                    mWaitLoadList.Remove(currentNode);

                    if (res.State != ResState.Ready)
                    {
                        res.RegisteResListener(OnResLoadFinish);
                        res.LoadAsync();
                    }
                    else
                    {
                        --mLoadingCount;
                    }
                }
            }
        }