public bool Add2Load(string name, Action <bool, IRes> listener = null, bool lastOrder = true) { if (string.IsNullOrEmpty(name)) { return(false); } IRes res = FindResInList(m_ResList, name); if (res != null) { if (listener != null) { res.RegisteOnResLoadDoneEvent(listener); } return(true); } res = ResMgr.S.GetRes(name, true); if (res == null) { return(false); } if (listener != null) { res.RegisteOnResLoadDoneEvent(listener); } //无论该资源是否加载完成,都需要添加对该资源依赖的引用 string[] depends = res.GetDependResList(); if (depends != null) { for (int i = 0; i < depends.Length; ++i) { Add2Load(depends[i]); } } AddRes2List(res, lastOrder); return(true); }
private void DoLoadAsync() { if (m_LoadingCount == 0) { if (m_Listener != null) { Action callback = m_Listener; m_Listener = null; callback(); } return; } 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.State != ResState.Ready) { res.RegisteOnResLoadDoneEvent(OnResLoadFinish); res.LoadAsync(); } else { --m_LoadingCount; } } } }