コード例 #1
0
    /// <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);
        }
    }
コード例 #2
0
    /// <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);
        }
    }