/// <summary> /// 异步加载面板协程 /// </summary> IEnumerator AysncPushPanel() { while (true) { while (m_AsyncLoadPanelParamList.Count > 0) { AsyncLoadPanelParam param = m_AsyncLoadPanelParamList[0]; m_AsyncLoadPanelParamList.RemoveAt(0); BasePanel basePanel = PushPanel(param.m_PanelType, paramList: param.paramList); param.m_FinishCallBack.Invoke(basePanel); param.Reset(); m_AsyncPanelParamPool.UnSpawn(param); yield return(null); } while (m_PopCount > 0) { m_PopCount--; PopPanel(); yield return(null); } m_AsyncLoadPanelParamList.Clear(); yield return(null); } }
/// <summary> /// 异步加载面板 /// </summary> /// <param name="panelType">panel类型</param> /// <param name="finishCallBack">panel加载完成后回调</param> /// <param name="paramList">panel加载需要携带的参数</param> public void PushPanelSync(UIPanelType panelType, OnAsyncLoadUIFinish finishCallBack, params object[] paramList) { if (panelType == UIPanelType.None) { return; } AsyncLoadPanelParam param = m_AsyncPanelParamPool.Spawn(); if (param != null) { param.m_PanelType = panelType; param.m_FinishCallBack = finishCallBack; param.paramList = paramList; m_AsyncLoadPanelParamList.Add(param); } }