/// <summary> /// 关闭界面。 /// </summary> /// <param name="uiForm">要关闭的界面。</param> /// <param name="userData">用户自定义数据。</param> public void CloseUIForm(int serialId, object userData = null) { UIForm uiForm = GetUIForm(serialId); if (uiForm == null) { Debug.LogError("要关闭的界面为空"); return; } UIGroup uiGroup = uiForm.UIGroup; if (uiGroup == null) { Debug.LogError("要关闭的界面的界面组为空"); return; } uiGroup.RemoveUIForm(uiForm); uiForm.OnClose(userData); uiGroup.Refresh(); //派发关闭界面完成事件 CloseUIFormCompleteEventArgs e = ReferencePool.Acquire <CloseUIFormCompleteEventArgs>(); m_EventManager.Fire(this, e.Fill(serialId, uiForm.UIFormAssetName, userData, uiGroup)); m_RecycleQueue.AddLast(uiForm); }
/// <summary> /// 打开界面 /// </summary> /// <param name="serialId">界面序列编号</param> /// <param name="uiFormAssetName">界面资源名称</param> /// <param name="uiGroup">界面组</param> /// <param name="uiFormInstance">界面实例</param> /// <param name="pauseCoveredUIForm">界面是否暂停或遮挡</param> /// <param name="isNewInstance">界面是否是新实例</param> /// <param name="duration">加载持续时间</param> /// <param name="userData">用户自定义数据</param> private void OpenUIForm(int serialId, string uiFormAssetName, UIGroup uiGroup, object uiFormInstance, bool pauseCoveredUIForm, bool isNewInstance, float duration, object userData) { try { //使用辅助器创建界面 UIForm uiForm = m_UIFormHelper.CreateUIForm(uiFormInstance, uiGroup, userData); if (uiForm == null) { throw new Exception("使用辅助器创建界面失败"); } uiForm.OnInit(serialId, uiFormAssetName, uiGroup, pauseCoveredUIForm, isNewInstance, userData); uiGroup.AddUIForm(uiForm); uiForm.OnOpen(userData); uiGroup.Refresh(); //派发打开界面成功事件 OpenUIFormSuccessEventArgs se = ReferencePool.Acquire <OpenUIFormSuccessEventArgs>(); m_EventManager.Fire(this, se.Fill(uiForm, duration, userData)); } catch (Exception exception) { //派发打开界面失败事件 OpenUIFormFailureEventArgs fe = ReferencePool.Acquire <OpenUIFormFailureEventArgs>(); m_EventManager.Fire(this, fe.Fill(serialId, uiFormAssetName, uiGroup.Name, pauseCoveredUIForm, userData, exception.Message)); } }
/// <summary> /// 激活界面 /// </summary> /// <param name="uiForm">要激活的界面</param> /// <param name="userData">用户自定义数据</param> public void RefocusUIForm(UIForm uiForm, object userData = null) { if (uiForm == null) { Debug.LogError("要激活的界面为空"); return; } UIGroup uiGroup = uiForm.UIGroup; if (uiGroup == null) { Debug.LogError("要激活的界面的界面组为空"); return; } uiGroup.RefocusUIForm(uiForm, userData); uiGroup.Refresh(); uiForm.OnRefocus(userData); }