/// <summary> /// 只能被UIMgr调用 /// </summary> /// <param name="viewId">View identifier.</param> /// <param name="prefab">Prefab.</param> /// <param name="parentTf">Parent tf.</param> public void Open(UIViewId viewId, GameObject prefab, Transform parentTf, object param) { ViewId = viewId; PrefabGO = GameObject.Instantiate(prefab); PrefabTf = PrefabGO.transform; PrefabTf.SetParent(parentTf); PrefabTf.Reset(); OnOpend(param); }
public void RegisterView(UIViewId viewId, string prefabName, System.Type viewType) { ViewConfigInfo configInfo = new ViewConfigInfo(); configInfo.prefabName = prefabName; configInfo.viewType = viewType; if (mViewConfig.ContainsKey(viewId)) { Logger.LogError("UIManager register same viewId:" + viewId.ToString()); } else { mViewConfig.Add(viewId, configInfo); } }
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); }); }
public void CleseView(UIViewId viewId) { if (mOpendViewDic.ContainsKey(viewId)) { UIViewBase viewBase = mOpendViewDic [viewId]; viewBase.Close(); ViewConfigInfo configInfo = mViewConfig [viewId]; GameMain.Instance.ResMgr.UnloadResource(configInfo.prefabName, typeof(GameObject)); } else if (mOpendViewDic.ContainsKey(viewId)) { if (!mWaitCloseingSet.Contains(viewId)) { mWaitCloseingSet.Add(viewId); } } else { Logger.LogWarning("UIManager close not opend or opening view: " + viewId.ToString()); } }