private IEnumerator <int> AsyncLoadData() { UIInfoData _uiInfoData = null; UnityEngine.Object _prefabObj = null; GameObject _uiObject = null; GameObject _uiParent = null; if (stackOpenUIs != null && stackOpenUIs.Count > 0) { do { _uiInfoData = stackOpenUIs.Pop(); _uiParent = _uiInfoData.Parent; _prefabObj = PrefabResManager.Instance.Load(_uiInfoData.Path); if (_prefabObj != null) { //_uiObject = NGUITools.AddChild(Game.Instance.mainUICamera.gameObject, _prefabObj as GameObject); _uiObject = MonoBehaviour.Instantiate(_prefabObj) as GameObject; if (null != UIRootObj) { if (null == _uiParent) { _uiObject.transform.parent = UIRootObj.transform; _uiObject.transform.localScale = Vector3.one; } else { _uiObject.transform.parent = _uiParent.transform; _uiObject.transform.localScale = Vector3.one; } } BaseUI _baseUI = _uiObject.GetComponent <BaseUI>(); if (null == _baseUI) { _baseUI = _uiObject.AddComponent(_uiInfoData.ScriptType) as BaseUI; } if (null != _baseUI) { _baseUI.SetUIWhenOpening(_uiInfoData.UIParams); } dicOpenUIs.Add(_uiInfoData.UIType, _uiObject); } } while(stackOpenUIs.Count > 0); } yield return(0); }
private void CloseUI(EnumUIType _uiType, GameObject _uiObj) { if (_uiObj == null) { dicOpenUIs.Remove(_uiType); } else { BaseUI _baseUI = _uiObj.GetComponent <BaseUI>(); if (_baseUI != null) { _baseUI.StateChanged += CloseUIHandler; _baseUI.Release(); } else { GameObject.Destroy(_uiObj); dicOpenUIs.Remove(_uiType); } } }