Exemple #1
0
        /*  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));
        }
Exemple #2
0
        public void Show(UiId id)
        {
            var uiPara = _uiManager.Show(id);

            ExcuteEffect(uiPara);
            ShowBtnState(uiPara.Item1);
        }
Exemple #3
0
    public void CloseUi(UiId uiId)
    {
        UiCtrl ui = GetUi(uiCtrlList, uiId);

        if (ui != null)
        {
            ui.Close();
        }
    }
Exemple #4
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #8
0
    // 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);
    }
Exemple #9
0
 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]);
 }
Exemple #10
0
    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);
    }
Exemple #11
0
        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));
        }
Exemple #12
0
    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
        }
Exemple #14
0
 public void Set(UiId rhs)
 {
     Set(rhs.ToString());
 }
Exemple #15
0
        public void Show(UiId id)
        {
            var uiPara = _uiManager.Show(id);

            ExcuteEffect(uiPara);
        }
Exemple #16
0
 public UiId GetCurrUiId()
 {
     return(_currUi == null?UiId.CreateInvalid() : _currUi.uiId);
 }
Exemple #17
0
    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);
    }