/// <summary> /// 显示一个新的UI,如果现在有正在显示的UI,那么会保存它的返回信息。 /// </summary> /// <param name="uiCtrl"></param> /// <param name="displayInfo"></param> /// <returns></returns> public Task displayUIWithReturn(IUICtrl uiCtrl, UIDisplayInfo displayInfo) { //如果当前有已经在显示的UI if (_currentDisplayUICtrl != null) { //就获取它的显示信息,并放进历史ui显示信息栈里面 UIDisplayInfo prevUIDisplayInfo = _currentDisplayUICtrl.getCurrentDisplayInfo(); prevUIDisplayInfo.uiCtrl = _currentDisplayUICtrl; _historyUIDisplayInfoStack.Add(prevUIDisplayInfo); } _currentDisplayUICtrl = uiCtrl; return(uiCtrl.display(displayInfo)); }
/// <summary> /// 打开一个UI /// </summary> /// <param name="id"></param> /// <returns></returns> protected UIConfig OpenUI(UIID id) { IUICtrl ctrl = _register[id]; UIConfig uiJson = JsonMgr.GetSingleton().GetUIConfigByID((int)id); if (uiJson == null) { return(null); } UIViewBase vb = ctrl.GetView(); if (vb == null) { GameObject uigo = GameObject.Instantiate(ResourceMgr.Instance.LoadResource(uiJson.Resid) as GameObject); if (uigo == null) { throw new System.Exception("加载UI资源出错 -------- " + uiJson.Resid); } vb = uigo.GetComponent <UIViewBase>(); ctrl.SetView(vb); ctrl.OnInit(); vb.AddComponent(uiJson); } vb.SetOrder(++layerOrder[uiJson.Layer]); if (!ctrl.IsOpen()) { vb.SetView(true); ctrl.OnOpen(); } if (!openList.Contains(id)) { if ((uiJson.Layer.Equals("UI1") || uiJson.Layer.Equals("Default"))) { Debug.LogFormat("Add into OpenList {0}", id); openList.Add(id); } } else { //换到队尾 openList.Remove(id); openList.Add(id); } return(uiJson); }
public IUICtrl Open(UIID id, params object[] arg) { CanvasView.graphic.enabled = false; IUICtrl ctrl = GetCtrl(id); if (ctrl == null) { throw new System.Exception("没有注册UI ---" + id); } ctrl.SetParameters(arg); UIConfig uiJson = base.OpenUI(id); ctrl.isOpen = true; if (uiJson == null) { throw new System.Exception("ui表没有ID ----" + id); } NavigationCtrl(uiJson); CanvasView.graphic.enabled = true; return(ctrl); }
protected void Registration(UIID id, IUICtrl ctrl) { _register.Add(id, ctrl); }