private ResourcesTask GetNextTask() { if (m_tasks.Count == 0) { return(null); } ResourcesTask task = m_tasks.Dequeue(); Object obj = null; //是否包含 if (m_datas.TryGetValue(task.path, out obj) && obj != null) { task.asset = obj; if (task.onBegin != null) { task.onBegin(task.path); } if (task.onProgress != null) { task.onProgress(task.path, 1); } if (task.onComplete != null) { task.onComplete(task.path, obj); } //递归下一个 task = GetNextTask(); } return(task); }
public void OnUpdate(float deltaTime, float unscaledDeltaTime) { if (m_agents.Length > 0) { for (int i = 0; i < m_agents.Length; i++) { if (m_agents[i].m_state == ResourcesAgent.State.Begin || m_agents[i].m_state == ResourcesAgent.State.Loading) { m_agents[i].OnUpdate(deltaTime, unscaledDeltaTime); } if (m_agents[i].m_state == ResourcesAgent.State.Complete) { //记录相关数据 ResourcesTask task = m_agents[i].CurrentTask(); if (task != null) { m_datas[task.path] = task.asset; } //重置状态 m_agents[i].RemoveTask(); } } } if (m_tasks.Count > 0 && m_agents.Length > 0) { for (int i = 0; i < m_agents.Length; i++) { if (m_agents[i].m_state == ResourcesAgent.State.Wait) { ResourcesTask task = GetNextTask(); if (task != null) { m_agents[i].AddTask(task); } } } } }