/// <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)); } }
private void LoadUIFormFailureCallback(string uiFormAssetName, LoadResourceStatus status, string errorMessage, object userData) { OpenUIFormInfo openUIFormInfo = (OpenUIFormInfo)userData; if (openUIFormInfo == null) { Debug.LogError("打开界面的信息为空"); return; } m_UIFormsBeingLoaded.Remove(openUIFormInfo.SerialId); m_UIFormAssetNamesBeingLoaded.Remove(uiFormAssetName); m_UIFormsToReleaseOnLoad.Remove(openUIFormInfo.SerialId); string message = string.Format("打开界面:{0} 失败,错误信息:{1}", uiFormAssetName, errorMessage); //派发打开界面失败事件 OpenUIFormFailureEventArgs e = ReferencePool.Acquire <OpenUIFormFailureEventArgs>(); m_EventManager.Fire(this, e.Fill(openUIFormInfo.SerialId, uiFormAssetName, openUIFormInfo.UIGroup.Name, openUIFormInfo.PauseCoveredUIForm, userData, message)); }