public void CloseUIForm <T>() { HUIForm rUIForm = null; if (m_HUIForms.TryGetValue(typeof(T), out rUIForm)) { rUIForm.UILogic.OnClose(); } }
private int RefocusUIForm(HUIForm uiForm) { if (uiForm == null) { throw new Exception("UI form is invalid."); } uiForm.UILogic.OnRefocus(); return(uiForm.Serial); }
/// <summary> /// 获取并创建HUIForm /// </summary> /// <param name="formType"></param> /// <returns></returns> private HUIForm GetUIForm(Type formType) { HUIForm uIForm = null; if (m_HUIForms.TryGetValue(formType, out uIForm)) { return(uIForm); } uIForm = new HUIForm(++m_SerialNum, formType); m_HUIForms.Add(formType, uIForm); return(uIForm); }
public async CFTask <int> OpenUIForm <T>() { Type uiType = typeof(T); //获取界面实例 HUIForm uIForm = GetUIForm(uiType); //判断是否在缓存列表中 if (uIForm.UILogic.RUIType == RUIType.Cache) { return(RefocusUIForm(uIForm)); } //资源绝对路径, 取视图类名短路径 string assetPathName = GlobalPath.Hoftix.GetFUI_PrefabAsset(uIForm.UILogic.FormClass); if (string.IsNullOrEmpty(assetPathName)) { throw new Exception("UI form asset name is invalid."); } //添加到正在加载中 m_UIFormsBeingLoaded.Add(m_SerialNum, assetPathName); //加载资源 LoadAssetCallbacks loadAsset = await ResourceComponent.This.LoadAsset(assetPathName, AssetCategory.FGUI, m_LoadAssetCallbacks, 0, OpenUIFormInfo.Create(m_SerialNum, uiType, uIForm.UILogic.FormClass)); //加载回调 if (loadAsset.LoadAssetStatus == LoadAssetStatus.Success) { //loadAsset.InvokeCallbackSuccess(); //创建UIForm return(m_SerialNum); } else { //loadAsset.InvokeCallbackFailed(); return(-1); } }
private void LoadAssetSuccessCallback(string uiFormAssetName, object uiFormAsset, float duration, object userData) { try { OpenUIFormInfo openUIFormInfo = (OpenUIFormInfo)userData; if (openUIFormInfo == null) { throw new Exception("Open UI form info is invalid."); } m_UIFormsBeingLoaded.Remove(openUIFormInfo.SerialId); //设置界面组信息 HUIForm uIForm = m_HUIForms[openUIFormInfo.UIType]; uIForm.UILogic.UIGroup = GetUIGroupField(uIForm.UILogic.UIGroupHierarchy); //获取加载包附加列表 UIPackage uIPackage = UIPackage.GetUIPackage(uiFormAsset, uIForm.UILogic.FormClass); uIForm.UIPackageName = uIPackage.name; //界面创建初始化 uIForm.UILogic.OnInit(); //界面功能实施 uIForm.UILogic.OnImplement(); //界面打开 uIForm.UILogic.OnOpen(); ReferencePool.Release(openUIFormInfo); } catch (Exception exception) { Log.Error(Utility.Text.Format("Create UI form Error {0}", exception.ToString())); } }