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(); } }
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); }
protected UiSubComponent(UiBase uiBase, GameObject obj) { _parentUi = uiBase; _gameObj = obj; }
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); }
public UiRoleSelectCharacter(UiBase parent, GameObject obj) : base(parent, obj) { _txtName = GetUi <Text>(@"Name Text"); }