private IEnumerator LoadResAsync <T>() where T : Object { while (true) { ResLoadAsyncData data = GetNeedLoadResData(); if (data != null) { ResourceRequest request = Resources.LoadAsync <T>(data.m_path); while (!request.isDone) { yield return(new WaitForEndOfFrame()); } if (data.m_action != null) { data.m_action(request.asset as T); } } else { yield return(new WaitForEndOfFrame()); } } }
private ResLoadAsyncData GetNeedLoadResData() { if (m_resPathList.Count > 0) { ResLoadAsyncData data = m_resPathList[0]; m_resPathList.RemoveAt(0); return(data); } return(null); }
private ResLoadAsyncData GetAsyncData(string path, DLoadResourcesCompete action) { ResLoadAsyncData data = null; if (m_cacheResPathList.Count > 0) { data = m_cacheResPathList[0]; m_cacheResPathList.RemoveAt(0); } else { data = new ResLoadAsyncData(); } data.m_path = path; data.m_action = action; return(data); }
public void LoadResourcesAsync <T>(EResourceType resType, string name, DLoadResourcesCompete action) where T : Object { string path = GameResFunc.GetResPath(resType, name); if (string.IsNullOrEmpty(path)) { Log(ELogType.Error, string.Format("res path is null !!!!! resType : {0}", resType)); return; } ResLoadAsyncData data = GetAsyncData(path, action); m_resPathList.Add(data); if (m_asyncEnd) { StartCoroutine(LoadResAsync <T>()); } }