/// <summary> /// 创建窗口操作 /// </summary> private Controller CreateView(EViewID viewID) { Controller controller = null; try { EViewInstType viewInstType = ViewConfig.Instance.GetViewInstType(viewID); foreach (KeyValuePair <int, Controller> keyval in listAllViews) { if (keyval.Value.GetViewID() == viewID) //已经打开的窗口 并且不允许多开的窗口 直接用这个实例返回 { if (viewInstType == EViewInstType.Single) { Debug.LogWarning(string.Format("The View viewID:[{0}] only allowed to be created one and it already exists ", viewID)); return(controller); } else { //TODO break; } } } GameObject viewPrefab = ViewConfig.Instance.GetViewPrefab(viewID); //待修改 if (viewPrefab != null) { GameObject viewObj = GameObject.Instantiate <GameObject>(viewPrefab); int viewInstID = seqView.nextval; controller = ViewConfig.Instance.CreateViewInstance(viewID, viewInstID, viewObj); //创建窗口控制层 if (null != controller) { listAllViews.Add(new KeyValuePair <int, Controller>(viewInstID, controller)); } controller.OpenView(); controller.createViewFinishListener(); } } catch (Exception ex) { Debug.LogError(string.Format("Create the View viewID:[{0}] fail,Msg:{1} exception:{2}", viewID, ex.Message, ex.StackTrace)); } return(controller); }
/// <summary> /// 获取窗口操作,所有窗口都通过这里打开 /// </summary> public Controller GetView(EViewID viewID) { Controller controller = null; EViewInstType viewInstType = ViewConfig.Instance.GetViewInstType(viewID); foreach (KeyValuePair <int, Controller> keyval in listAllViews) { if (keyval.Value.GetViewID() == viewID) //已经打开的窗口 并且不允许多开的窗口 直接用这个实例返回 { if (viewInstType == EViewInstType.Single) { controller = keyval.Value; return(controller); } else { //TODO break; } } } controller = this.CreateView(viewID); return(controller); }