/* private void Awake() * { * instance = this; * _layerManager = GetComponent<UILayerManager>(); * if (_layerManager == null) * Debug.LogError("can not find UILayerManager"); * _effectManager = GetComponent<UIEffectManager>(); * if(_effectManager==null) * Debug.LogError("can not find UIEffectManager"); * }*/ public Tuple <Transform, Transform> Show(UiId id) { GameObject ui = GetPrefabObject(id); if (ui == null) { Debug.LogError("Can not find prefab:" + id); return(null); } UIBase uiScript = GetUiScript(ui, id); if (uiScript == null) { return(null); } InitUI(uiScript); Transform hideUI = null; if (uiScript.layer == UILayer.BASIC_UI) { uiScript.UiState = UIState.SHOW; Hide(); } else { uiScript.UiState = UIState.SHOW; } _uiStack.Push(uiScript); return(new Tuple <Transform, Transform>(ui.transform, hideUI)); }
public void Show(UiId id) { var uiPara = _uiManager.Show(id); ExcuteEffect(uiPara); ShowBtnState(uiPara.Item1); }
public void CloseUi(UiId uiId) { UiCtrl ui = GetUi(uiCtrlList, uiId); if (ui != null) { ui.Close(); } }
private UIBase GetUIScript(GameObject prefab, UiId id) { UIBase uiBase = prefab.GetComponent <UIBase>(); if (!uiBase) { //添加对应的UI,并返回 return(AddUiScript(prefab, id)); } return(uiBase); }
private UIBase AddUiScript(GameObject prefab, UiId id) { string scriptName = ConstValue.UI_NAMESPACE_NAME + "." + id + ConstValue.UI_SCRIPT_POSTFIX; Type ui = Type.GetType(scriptName); if (ui == null) { Debug.LogError("can not find script " + scriptName); return(null); } return(prefab.AddComponent(ui) as UIBase); }
private UIBase AddUiScript(GameObject prefab, UiId id) { string view = ConstValue.UI_NAMESPACE_NAME + "." + id + ConstValue.UI_SCRIPT_POSTFIX; Type type = Type.GetType(view); if (type == null) { Debug.LogError("can not find view:" + view); return(null); } return(prefab.AddComponent(type) as UIBase); }
/// <summary> /// 获取实例化UI上的脚本,如果没有则根据UiId添加对应的UIBase脚本 /// </summary> /// <param name="prefab"></param> /// <param name="id"></param> /// <returns></returns> private UIBase GetUiScript(GameObject prefab, UiId id) { UIBase ui = prefab.GetComponent <UIBase>(); if (ui == null) { return(AddUiScript(prefab, id)); } else { return(ui); } }
// get ui public UiCtrl GetUi(List <UiCtrl> list, UiId uiId) { UiCtrl result = null; for (int i = 0; i < list.Count; i++) { if (list[i].uiId == uiId) { result = list[i]; break; } } return(result); }
private GameObject GetPrefabObject(UiId id) { if (!_prefabDictionary.ContainsKey(id) || _prefabDictionary[id] == null) { GameObject prefab = LoadManager.Single.Load <GameObject>(Path.UI_PATH, id.ToString()); if (prefab) { _prefabDictionary[id] = Instantiate(prefab); } else { Debug.LogError("can not find prefab" + id); } } return(_prefabDictionary[id]); }
public UiId GetPrevUi(UiId _uiId) { UiId _prevUiId = UiId.CreateInvalid(); for (int i = 0; i < _prevSections.Count; ++i) { if (_prevSections[i].uiId == _uiId) { continue; } _prevUiId.Set(_prevSections[i].uiId); break; } return(_prevUiId); }
public Tuple <Transform, Transform> Show(UiId id) { //根据id实例化对应的view. /* * 获取对应UIBase, initUI * 如果当前UI是baseUI,则隐藏当前的View * push当前UI.' * 返回tuple, ui.transform, hideUI */ var prefab = GetPrefabObject(id); if (prefab == null) { Debug.LogError("can not find prefab " + id); return(null); } UIBase view = GetUIScript(prefab, id); if (view == null) { Debug.LogError("can not find UIBase " + id); return(null); } UpdateUI(view); Transform hideUI = null; if (view.GetUiLayer() == UILayer.BASIC_UI) { hideUI = Hide(); if (hideUI != null) { Debug.Log("hideUI:" + hideUI.gameObject.name); } } view.UiState = UIState.SHOW; _uiStack.Push(view); return(new Tuple <Transform, Transform>(view.transform, hideUI)); }
public void StackActiveUi(UiId uiId) { _prevSections.RemoveAll(s => s.uiId == uiId); if (_prevSections.Count <= 0) { return; } StackSection uisection = _prevSections[0]; int count = 0; _prevSections.ForEach(x => { Debug.Log("stack" + (count++) + " next ui : " + x.uiId); }); if (uisection != null) { uisection.param.ResetParam(); ActiveUi(uisection.uiId, uisection.param, uisection.spawnType, false); } }
public Tuple <Transform, Transform> Show(UiId id) { GameObject ui = GetPrefabObject(id); if (ui == null) { Debug.LogError("can not find prefab " + id.ToString()); return(null); } UIBase uiScript = GetUiScript(ui, id); if (uiScript == null) { return(null); } // 初始化UI对应的父物体 InitUi(uiScript); Transform hideUI = null; if (uiScript.GetUiLayer() == UILayer.BASIC_UI) { uiScript.uiState = UIState.SHOW; hideUI = Hide(); } else { uiScript.uiState = UIState.SHOW; } _uiStack.Push(uiScript); return(new Tuple <Transform, Transform>(ui.transform, hideUI)); //Item1:要显示的UI, Item2:要隐藏的UI }
public void Set(UiId rhs) { Set(rhs.ToString()); }
public void Show(UiId id) { var uiPara = _uiManager.Show(id); ExcuteEffect(uiPara); }
public UiId GetCurrUiId() { return(_currUi == null?UiId.CreateInvalid() : _currUi.uiId); }
public UiCtrl ActiveUi(UiId uiId, UiParam param = null, UISpawntype spawnType = UISpawntype.EUIPage, bool push = true, bool clearstack = false) { UiCtrl ui = GetUi(uiCtrlList, uiId); if (ui == null) { var prefab = ResourceManager.instance.CreateUI(spawnType, uiId.ToString()); if (prefab == null) { Debug.Assert(prefab != null, " ui resource is null spawnTyp : " + spawnType + " uiId :" + uiId.ToString()); return(null); } ui = prefab.GetComponent <UiCtrl>(); string value = ui.GetType().ToString(); ui.uiId.Set(value); ui.SetActive(false); } if (ui != null && ui.gameObject != null) { RectTransform rt = ui.GetComponent <RectTransform>(); Transform parent = (spawnType == UISpawntype.EUIPage) ? m_tRootPage : (spawnType == UISpawntype.EUIAbove) ? m_tRootAbove : m_tRootPopup; rt.SetParent(parent); rt.Reset(); if (param == null) { param = new UiParam(); } if (ui._uiParamBase != null) { ui._uiParamBase.Clear(); } if (ui.uiResult != null) { ui.uiResult.Clear(); } ui.SetUiParam(param); ui._Activate(); ui.SetActive(true); ui._Init(); if (clearstack) { _prevSections.Clear(); } if (push) { UiCtrl uisection = ui.GetComponent <UiCtrl>() as UiCtrl; if (uisection != null) { StackSection s = new StackSection(); s.uiId.Set(uisection.uiId); s.param = param; s.spawnType = spawnType; _prevSections.Insert(0, s); } } bool bPopup = (UISpawntype.EUIPopup == spawnType); if (!bPopup) { _currUi = ui; uiCtrlList.Add(ui); } if (bPopup) { uiPopupList.Add(ui); } } return(ui); }