Пример #1
0
        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);
        }
Пример #2
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);
        }