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);
    }
Example #2
0
    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);
        });
    }