/// <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);
        }