public void ForGroupBelow(UIID uiid, System.Action <UIID> action) { if (action == null) { return; } int count = _groups.Count; bool readyToExec = false; for (int i = count - 1; i >= 0; --i) { if (_groups[i].Contains(uiid)) { readyToExec = true; continue; } else if (readyToExec) { int uiidCount = _groups[i].Count; for (int k = 0; k < uiidCount; ++k) { action(_groups[i][k]); } break; } } }
public void HideBelow(UIID ui) { if ((ui.cullSettings & CullSettings.CullBelow) != 0) { _uiHeap.ForGroupBelow(ui, HideDialog); } }
/// <summary> /// 关闭页面 /// </summary> /// <param name="panelName"></param> public void ClosePanel(UIID panelName) { BasePanel basePanel; m_DicAllPanel.TryGetValue(panelName, out basePanel); if (basePanel == null) { return; } switch (basePanel.showMode) { case UIShowMode.Normal: ExitPanel(panelName); break; case UIShowMode.ReverseChange: PopUIPanel(); break; case UIShowMode.HideOther: ExitPanelAndDisplayOther(panelName); break; } }
public UIData(UIID id, string prefabPath, GameObject uiObject, bool unique) { ID = id; UIObject = uiObject; PrefabPath = prefabPath; bUnique = unique; }
/// <summary> /// 实例化UI /// </summary> /// <param name="id"></param> /// <param name="action"></param> /// <returns></returns> public UIBase InstanceWindow(UIID id, Action action = null) { UIBase UB = GetUIBase(id); if (_allWindowsByUIID.ContainsKey(id)) { if (!UB.Repeat) { DestroyWindow(id); } } if (UIResource.WindowPrefabs.ContainsKey(id)) { string prefabPath = UIResource.WindowPrefabs[id].Path; GameObject prefab = Resources.Load <GameObject>(prefabPath); if (prefab != null) { GameObject Go = Utility.InstantiateGo(prefab, true); UB = Go.GetComponent <UIBase>(); Utility.AddChildToTarget_UI(UB.RootTransform ?? CavasGo.transform, Go.transform, UB.SiblingIndex); UB.GUID = System.Guid.NewGuid().ToString(); } } if (UB != null) { UB.SetState(true); _allWindowsByUIID[id] = UB; _allWindowsByGUID[UB.GUID] = UB; if (action != null) { action(); } } return(UB); }
/// <summary> /// 销毁UI /// </summary> /// <param name="id">UIID</param> public void DestroyWindow(UIID id, string GUID = null, Action action = null) { UIBase ui; if (GUID == null) { ui = GetUIBase(id); } else { ui = GetUIBase(GUID); } if (ui != null) { if (action != null) { action(); } ui.DestroyUI(); if (_allWindowsByUIID != null) { _allWindowsByUIID.Remove(id); } if (_allWindowsByGUID != null) { _allWindowsByGUID.Remove(GUID); } } CurrentItem = null; }
public void Show(UIID id) { GameObject go = GetUIObejct(id); if (go == null) { Debug.LogError("can not find ID:" + id); } UIBase uiScript = GetUIScript(go, id); if (uiScript == null) { return; } InitUI(uiScript); if (uiScript.Layer == UILayer.BASIC_UI) { uiScript.State = UIState.SHOW; Hide(); } else { uiScript.State = UIState.SHOW; } _uiEffectManager.Enter(uiScript.transform); _uiStake.Push(uiScript); }
/// <summary> /// HideOther属性的显示UI方法 /// </summary> /// <param name="panelName"></param> private void EnterPanelAndHideOther(UIID panelName) { BasePanel basePanel; BasePanel basePanelFromAll; m_DicCurrentShowPanel.TryGetValue(panelName, out basePanel); if (basePanel != null) { return; } foreach (BasePanel panel in m_DicCurrentShowPanel.Values) { panel.Hide(); } foreach (BasePanel panel in m_StaCurrentPanel) { panel.Hide(); } m_DicAllPanel.TryGetValue(panelName, out basePanelFromAll); if (basePanelFromAll != null) { m_DicCurrentShowPanel.Add(panelName, basePanelFromAll); basePanelFromAll.Display(); } }
/// <summary> /// 打开页面 /// </summary> /// <param name="panelName"></param> public void ShowPanel(UIID panelName) { BasePanel basePanel = null; basePanel = LoadPanelToAllPanelCache(panelName); if (basePanel == null) { return; } if (basePanel.IsClearStack) { ClearStackArray(); } switch (basePanel.showMode) { case UIShowMode.Normal: LoadPanelToCurrentCache(panelName); break; case UIShowMode.ReverseChange: PushPanel2Stack(panelName); break; case UIShowMode.HideOther: EnterPanelAndHideOther(panelName); break; } }
public void LoadPage(UIID uid) { if (ui_dict_all.ContainsKey(uid)) { Debug.LogWarning("UI duplicate: " + uid + " already exists."); return; } if (!ui_config_table.ContainsKey(uid)) { Debug.LogError("Load UI fails: " + uid + " is not found in ui config table."); return; } string path = ui_config_table[uid]; //UIPage page = Resources.Load<UIPage>(path); GameObject assetObj = uiBundle.LoadAsset(uid.ToString() + ".prefab") as GameObject; UIPage page_obj = assetObj.GetComponent <UIPage>(); if (page_obj == null) { Debug.LogError("Load UI asset fails: " + uid + " cannot be loaded."); return; } UIPage page = Instantiate(page_obj, this.transform); page.Hide(); ui_dict_all.Add(uid, page); }
private UIBase ReadyToShowUI(UIID id) { if (shownUI.ContainsKey(id)) return null; UIBase ui = GetUIBase(id); //如果ui没有被打开,则重新创建 if (!ui) { if (UIResourceDefine.UIPrefabPath.ContainsKey(id)) { string prefabPath = UIResourceDefine.UIPrefabPathString + UIResourceDefine.UIPrefabPath[id]; GameObject prefab = Resources.Load<GameObject>(prefabPath); if (prefab != null) { GameObject uiObject = (GameObject)GameObject.Instantiate(prefab); uiObject.SetActive(true); ui = uiObject.GetComponent<UIBase>(); if (!ui) Debug.LogError(id + " cannot get component <UIBase>"); Transform targetRoot = GetTargetRoot(ui.GetUIType()); GameUtility.AddChildToTarget(targetRoot, ui.gameObject.transform); allUI[id] = ui; } } } return ui; }
public void ShowBelow(UIID id) { if ((id.cullSettings & CullSettings.CullBelow) != 0) { _uiHeap.ForGroupBelow(id, ShowDialog); } }
/// <summary> /// 开始执行加载 /// </summary> /// <param name="load">委托->加载内容</param> /// <param name="ID">加载的状态ID</param> /// <param name="loadOver">加载完成后执行</param> /// <returns></returns> public IEnumerator LoadBegin(UIID ID, LoadType loadType, Action load = null, Action <UIID> loadOver = null) { //transform.SetAsLastSibling(); //设置为最前的层 switch (loadType) { case LoadType.Loading: if (load != null) { load.Invoke(); } yield return(StartCoroutine(UIManager._Instance.CreateUI(ID))); if (loadOver != null) { loadOver.Invoke(ID); } break; case LoadType.LoadOver: if (loadOver != null) { loadOver.Invoke(ID); } break; default: break; } //load.Invoke(); //yield return new WaitForEndOfFrame(); }
protected IUICtrl GetCtrl(UIID id) { IUICtrl ctrl; _register.TryGetValue(id, out ctrl); return(ctrl); }
/// <summary> /// 通过ID获取UIBase /// </summary> /// <param name="id"></param> /// <returns></returns> public UIBase GetUIBase(UIID id) { if (_allWindowsByUIID.ContainsKey(id)) { return(_allWindowsByUIID[id]); } return(null); }
public void CreateNewTopGroup(UIID ui) { UIGroup group = new UIGroup(); group.Add(ui); _groups.Add(group); }
public void ShowUI(UIID id) { UIBase uibase = ReadyToShowUI(id); if (uibase != null) { DoShowUI(uibase, id); } }
public static UIID Generate(CullSettings cullSettings = CullSettings.NoCullNoClear) { UIID created = new UIID(NEXT, cullSettings); ++NEXT; return(created); }
private void UpdateCameraRenderSettings(UIID uiid) { CameraClearFlags clearFlags = (uiid.cullSettings & CullSettings.ClearCamera) == 0 ? CameraClearFlags.SolidColor : CameraClearFlags.Depth; if (uiCamera.clearFlags != clearFlags) { uiCamera.clearFlags = clearFlags; } }
public UIPage GetPage(UIID uid) { if (!ui_dict_all.ContainsKey(uid)) { Debug.LogError("Get ui fails: " + uid + " is not exist in game."); return(null); } return(ui_dict_all[uid]); }
public TaskData(int id, string name, string desc, string iconPath, UIID uiName, string title) { ID = id; Name = name; Desc = desc; IconPath = iconPath; UIName = uiName; Title = title; }
/// <summary> /// 显示界面 /// </summary> protected virtual void RealShowUI(UIBase baseUI, UIID id) { baseUI.ShowUI(); shownUIs[id] = baseUI; if (baseUI.uiData.uiType == UIType.Normal) { lastShownNormalUI = curShownNormalUI; curShownNormalUI = baseUI; } }
public AbstractPanel GetPanelLoaded(UIID uiID) { AbstractPanel panel = null; if (m_AllPanelMap.TryGetValue(uiID, out panel)) { return(panel); } return(null); }
public void HidePage(UIID uid) { if (!ui_dict_show.ContainsKey(uid)) { Debug.LogError("Hide ui fails: " + uid + " is not exist in game."); return; } ui_dict_show[uid].Hide(); ui_dict_show.Remove(uid); }
public virtual T GetGameUIScript <T>(UIID id) where T : UIBase { UIBase baseUI = GetGameUI(id); if (baseUI != null) { return((T)baseUI); } return((T)((object)null)); }
public bool Remove(UIID id) { bool removed = _uiHeap.Remove(id); if (_uiHeap.IsEmpty()) { HideCanvasIfNeeded(); } return(removed); }
public bool Remove(UIID ui) { IEnumerator <UISortingLayer.Layers> layerIter = UISortingLayer.GetEnumerator(); do { Remove(layerIter.Current, ui); }while(layerIter.MoveNext()); return(false); }
public void AddToTopGroup(UIID ui) { if (_groups.Count > 0) { _groups[_groups.Count - 1].Add(ui); } else { CreateNewTopGroup(ui); } }
public UIView FindUI(UIID uiId) { UIPanelBase thisPanel; if (m_CachePanel.TryGetValue(uiId, out thisPanel)) { return(thisPanel.m_UIView); } return(null); }
public void CloseUI(UIID uiId) { UIPanelBase thisPanel; if (m_ShowingPanel.TryGetValue(uiId, out thisPanel)) { thisPanel.Close(); m_ShowingPanel.Remove(uiId); m_CachePanel.Add(uiId, thisPanel); } }
private BasePanel LoadPanelToAllPanelCache(UIID panelName) { BasePanel returnPanel = null; m_DicAllPanel.TryGetValue(panelName, out returnPanel); if (returnPanel == null) { returnPanel = LoadPanel(panelName); } return(returnPanel); }
public void CloseTo(UIID id, long cnt) { foreach (UIData data in _UIStack) { count--; data.UIObject.SetActive(false); if (data.ID == id && data.count == cnt) { break; } } }
void DoShowUI(UIBase ui, UIID id) { ui.ShowUI(); shownUI[id] = ui; }
/// <summary> /// 获取UIBase /// </summary> /// <param name="id"></param> /// <returns></returns> private UIBase GetUIBase(UIID id) { if (allUI.ContainsKey(id)) return allUI[id]; else return null; }