private IEnumerator <int> AsyncLoadData() { UIInfoData _uiInfoData = null; UnityEngine.Object _uiprefab = null; GameObject _uiObject = null; if (stackOpenUIs != null && stackOpenUIs.Count > 0) { do { _uiInfoData = stackOpenUIs.Pop(); _uiprefab = Resources.Load(_uiInfoData.Path); if (_uiprefab != null) { _uiObject = MonoBehaviour.Instantiate(_uiprefab) as GameObject; if (_uiObject == null) { yield break; } RectTransform rt = _uiObject.GetComponent <RectTransform>(); BaseUI _baseui = _uiObject.GetComponent <BaseUI>(); if (_baseui != null) { _baseui.SetUIWhenOpening(_uiInfoData.UIparams); } else { _baseui = _uiObject.AddComponent(_uiInfoData.ScriptType) as BaseUI; } Transform layer = uiContainer.FindChild(_baseui.GetUILayer().ToString()); rt.SetParent(layer, false); dicOpenUIs.Add(_uiInfoData.UIType, _uiObject); } else { Debug.Log(" 当前路径不存在 " + _uiInfoData.Path); } } while (stackOpenUIs.Count > 0); } yield return(0); }
private IEnumerator <int> AsyncLoadData() { UIInfoData _uiInfoData = null; UnityEngine.Object _prefabObj = null; GameObject _uiObject = null; if (stackOpenUIs != null && stackOpenUIs.Count > 0) { do { _uiInfoData = stackOpenUIs.Pop(); if (dicOpenUIsCache.ContainsKey(_uiInfoData.UIType)) { dicOpenUIsCache[_uiInfoData.UIType].SetActive(true); dicOpenUIs.Add(_uiInfoData.UIType, _uiObject); break; } _prefabObj = Resources.Load(_uiInfoData.Path); if (_prefabObj != null) { _uiObject = MonoBehaviour.Instantiate(_prefabObj, canvas.transform) as GameObject; dicOpenUIsCache.Add(_uiInfoData.UIType, _uiObject); 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); }