コード例 #1
0
        public void Update()
        {
            foreach (var key in _removeObjs)
            {
                UiBase uibase = _uiInses[key];
                uibase.Destroy();
                _uiInses.Remove(key);
            }
            _removeObjs.Clear();

            foreach (var one in _addObjs.Values)
            {
                _uiInses.Add(one.GetUiComplexType(), one);

                // 开始资源加载
                GameLogger.GetInstance().Trace("-- ui open:" + one.GetType());
                var uiAb = UiFactory.GetInstance().GetAssetBundle(one.GetUiType());
                if (uiAb != null)
                {
                    AssetBundleMgr.GetInstance().AsyncLoad(uiAb, AsyncLoadCallBack, one.GetUiComplexType());
                }
                else
                {
                    // 空界面,做逻辑切换用的,不需要gameobject表现
                    one.AttachGameObject(null);
                }
            }

            _addObjs.Clear();
            foreach (var one in _uiInses)
            {
                one.Value.Update();
            }
        }
コード例 #2
0
        public UiBase OpenUi(UiType uiType, ulong sn)
        {
            UiComplexType key = new UiComplexType(uiType, sn);

            if (_uiInses.ContainsKey(key))
            {
                _uiInses[key].Show();
                return(_uiInses[key]);
            }

            if (_addObjs.ContainsKey(key))
            {
                return(_addObjs[key]);
            }

            UiBase uiIns = UiFactory.GetInstance().Create(uiType, sn);

            if (uiIns == null)
            {
                GameLogger.GetInstance().Output("!!!! OpenUi Error. Create ui == null. uiType:" + uiType);
                return(null);
            }

            _addObjs.Add(uiIns.GetUiComplexType(), uiIns);
            return(uiIns);
        }
コード例 #3
0
 protected UiSubComponent(UiBase uiBase, GameObject obj)
 {
     _parentUi = uiBase;
     _gameObj  = obj;
 }
コード例 #4
0
        private void AsyncLoadCallBack(object context, AssetBundle ab)
        {
            UiComplexType key = (UiComplexType)context;

            UiBase uiObj = null;

            if (_uiInses.ContainsKey(key))
            {
                uiObj = _uiInses[key];
            }

            if (uiObj == null && _addObjs.ContainsKey(key))
            {
                uiObj = _addObjs[key];
            }

            // 回调的时候,界面已经没有了
            if (uiObj == null)
            {
                return;
            }

            Canvas canvas = FindObjectOfType <Canvas>();

            if (canvas == null)
            {
                string canvasUrl = _urlCanvas;
                //if (key.UiType == UiType.LoadingBar || key.UiType == UiType.Login)
                //{
                //    // 登录和加载界面的背影略有不同
                //    canvasUrl = _urlCanvasBg;
                //}

                AssetBundle abBg = AssetBundleMgr.GetInstance().GetAb(canvasUrl);
                if (abBg == null)
                {
                    GameLogger.GetInstance().Debug($"!!!!!GetAb failed. {canvasUrl}");
                    return;
                }

                GameObject canvasObj = MonoBehaviour.Instantiate(abBg.LoadAsset(abBg.GetAllAssetNames()[0])) as GameObject;
                if (canvasObj == null)
                {
                    return;
                }

                canvasObj.transform.Rotate(0, 0, 0);
                canvas = canvasObj.GetComponent <Canvas>();
            }

            // 对像挂在 canvas 之下
            GameObject obj =
                MonoBehaviour.Instantiate(ab.LoadAsset(ab.GetAllAssetNames()[0]), canvas.transform) as GameObject;

            if (obj == null)
            {
                return;
            }

            obj.transform.Rotate(0, 0, 0);
            //obj.transform.localScale = new Vector3( 1, 1, 1 );
            uiObj.AttachGameObject(obj);
        }
コード例 #5
0
 public UiRoleSelectCharacter(UiBase parent, GameObject obj) : base(parent, obj)
 {
     _txtName = GetUi <Text>(@"Name Text");
 }