コード例 #1
0
        IEnumerator ShowUIWithLoadData(IUIBase i_ui_base, object data = null)
        {
            while (HasLockUI(i_ui_base, m_switch_lock_name))
            {
                yield return(0);
            }

            LockUI(i_ui_base, m_switch_lock_name);

            //加载数据相关
            if (NeedLoadDataBeforeShow(i_ui_base))
            {
                UIAsyncRequestResult res = RecyclableObject.Create <UIAsyncRequestResult>();
                res.Success = true;
                yield return(i_ui_base.LoadData(res));

                if (!res.Success)
                {
                    RecyclableObject.Recycle(res);
                    UnLockUI(i_ui_base, m_switch_lock_name);
                    yield break;
                }
            }

            if (i_ui_base.IsStateUI)
            {
                if (ms_stack_manager != null)
                {
                    ms_stack_manager.OnShowMainUI(i_ui_base);
                }

                yield return(CloseAllShowedUI());
            }

            yield return(ShowUIBase(i_ui_base, data));

            ms_showed_ui[(int)i_ui_base.Name] = i_ui_base;

            //显示附属UI
            if (i_ui_base.IsStateUI)
            {
                for (int i = 0; i < i_ui_base.MateUIList.Count; ++i)
                {
                    ShowUI(i_ui_base.MateUIList[i]);
                }
            }

            //加载数据相关
            if (NeedLoadDataBeforeShow(i_ui_base))
            {
                i_ui_base.UpdateUIOnShow();
            }
            else
            {
                i_ui_base.UpdateUIByDefaultDataOnShow();
                UIAsyncRequestResult res = RecyclableObject.Create <UIAsyncRequestResult>();
                res.Success = true;
                yield return(i_ui_base.LoadData(res));

                RecyclableObject.Recycle(res);
                i_ui_base.UpdateUIOnShow();
            }

            UnLockUI(i_ui_base, m_switch_lock_name);
        }
コード例 #2
0
 /*面板打开前两种加载数据的方式,通过UI注册时变量m_load_data_before_show(显示之前先加载数据,通过成功与否判断是否打开UI)来控制
  * 一般用于请求服务器
  * 1、LoadData --> OnShow --> UpdateUIOnShow 提前加载数据,根据加载结果,成功则打开UI刷新;失败则不打开UI
  * 2、OnShow --> UpdateUIByDefaultDataOnShow --> LoadData --> UpdateUIOnShow 先打开UI用默认数据填充,然后加载数据,最后刷新UI
  * 注:LoadData的结果需要设置到UIAsyncRequestResult
  */
 public virtual IEnumerator LoadData(UIAsyncRequestResult res)
 {
     yield break;
 }