public void OpenView(EViewType viewType) { while (openedView.Count > 0) { UIViewBase view = openedView.Dequeue(); view.Close(); } UIViewBase target = viewDict[(int)viewType]; target.Open(); openedView.Enqueue(target); }
public void OpenView(UIViewId viewId, object param = null, System.Action hdlOnSuccess = null) { Logger.LogInfo("打开界面: " + viewId.ToString()); ViewConfigInfo configInfo = null; if (!mViewConfig.TryGetValue(viewId, out configInfo)) { Logger.LogError("UIManager open not registered view:" + viewId.ToString()); return; } if (mOpendViewDic.ContainsKey(viewId)) { Logger.LogError("UIManager open opened view,viewId:" + viewId.ToString()); return; } if (mOpeningViewDic.ContainsKey(viewId)) { mOpeningViewDic [viewId] = param; return; } mOpeningViewDic.Add(viewId, param); GameMain.Instance.ResMgr.LoadResourceAsync(this, configInfo.prefabName, typeof(GameObject), delegate(Object prefab) { if (mWaitCloseingSet.Contains(viewId)) { GameMain.Instance.ResMgr.UnloadResource(configInfo.prefabName, typeof(GameObject)); mWaitCloseingSet.Remove(viewId); } else { UIViewBase viewBase = System.Activator.CreateInstance(mViewConfig[viewId].viewType) as UIViewBase; viewBase.Open(viewId, prefab as GameObject, mViewRoot, mOpeningViewDic[viewId]); mOpendViewDic.Add(viewId, viewBase); if (null != hdlOnSuccess) { hdlOnSuccess.Invoke(); } } mOpeningViewDic.Remove(viewId); }, delegate(string errorCode) { Logger.LogError("UIManager load " + configInfo.prefabName + " error, code:" + errorCode); }); }