Ejemplo n.º 1
0
        private BaseView CreateView(UIType uiType, bool isReapt = false)
        {
            if (!_dicUIConfigs.ContainsKey(uiType))
            {
                Debug.LogError(string.Format("请在UIType={0},是否在UIConfig.json中配置!", uiType));
                return(null);
            }

            BaseView     curView;
            UIConfigData uiConfig = _dicUIConfigs[uiType];

            //1、判断是否时可重复的View
            if (!isReapt)
            {
                //如果不是可重复界面,那么将当前打开的这个类型的界面全都关闭
                CloseView(uiType, true);
            }

            //2、判断打开的是不是固定界面
            if ((UILayer)uiConfig.uiLayer == UILayer.Fixed)
            {
                CloseAllView();
            }

            //3、判断是否有缓存
            curView = PopViewFromCache(uiType);
            if (curView == null)
            {
                //创建新的View

                Transform  parent = GetChildLayer((UILayer)uiConfig.uiLayer);
                GameObject prefab = Resources.Load <GameObject>(uiConfig.prefabPath);
                curView = GameObject.Instantiate <GameObject>(prefab, parent, false).GetComponent <BaseView>();
            }

            //4、生成新的ViewId,添加界面
            curView.InitViewAttribute(++_instanceViewID, uiConfig);
            AddChildToLayer(curView);

            //5、更新_curTopViewID
            BaseView topView = GetTopView();

            if (topView)
            {
                _curTopViewID = topView.GetViewID();
            }
            return(curView);
        }