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); }