/// <summary> /// 打开界面 /// </summary> /// <param name="uiFormAssetName">界面资源名称</param> /// <param name="uiGroupName">界面组名称</param> /// <param name="priority">加载界面资源的优先级</param> /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面</param> /// <param name="userData">用户自定义数据</param> /// <returns>界面的序列编号</returns> public int OpenUIForm(string uiFormAssetName, string uiGroupName, int priority, bool pauseCoveredUIForm, object userData) { if (string.IsNullOrEmpty(uiFormAssetName)) { throw new Exception("UI form asset name is invalid."); } if (string.IsNullOrEmpty(uiGroupName)) { throw new Exception("UI group name is invalid."); } UIGroup uiGroup = GetUIGroup(uiGroupName); if (uiGroup == null) { throw new Exception(TextUtil.Format("UI group '{0}' is not exist.", uiGroupName)); } int serialId = m_Serial++; UIFormInstanceObject uiFormInstanceObject = m_InstancePool.Spawn(uiFormAssetName); if (uiFormInstanceObject == null) { m_UIFormsBeingLoaded.Add(serialId, uiFormAssetName); GameEntry.Resource.LoadAsset(uiFormAssetName, typeof(GameObject), priority, m_LoadAssetCallbacks, new OpenUIFormInfo(serialId, uiGroup, pauseCoveredUIForm, userData)); } else { InternalOpenUIForm(serialId, uiFormAssetName, uiGroup, uiFormInstanceObject.Target, pauseCoveredUIForm, false, 0f, userData); } return(serialId); }
private void LoadUIFormSuccessCallback(string uiFormAssetName, UnityEngine.Object uiFormAsset, float duration, object userData) { OpenUIFormInfo openUIFormInfo = (OpenUIFormInfo)userData; if (openUIFormInfo == null) { throw new Exception("Open UI form info is invalid."); } m_UIFormsBeingLoaded.Remove(openUIFormInfo.SerialId); if (m_UIFormsToReleaseOnLoad.Contains(openUIFormInfo.SerialId)) { m_UIFormsToReleaseOnLoad.Remove(openUIFormInfo.SerialId); GameEntry.Resource.UnloadAsset(uiFormAsset); return; } UIFormInstanceObject uiFormInstanceObject = new UIFormInstanceObject(uiFormAssetName, uiFormAsset, UnityEngine.Object.Instantiate(uiFormAsset)); m_InstancePool.Register(uiFormInstanceObject, true); InternalOpenUIForm(openUIFormInfo.SerialId, uiFormAssetName, openUIFormInfo.UIGroup, uiFormInstanceObject.Target, openUIFormInfo.PauseCoveredUIForm, true, duration, openUIFormInfo.UserData); }