public void _initialize(SceneUIObject _needhideObj) { //_camera = MainUICamera.getInstance(); //_gameObject = _obj; _needHideObj = _needhideObj; _needHideObj.SetActive(true); _openAreaRect = null; buildByResID(); MainUICamera.getInstance().initialize(this); //InitAnimIgnoreWindow(); InitIgnoreLayer(); //InitNeedHideFreeWindow(); //KHUIManager.getInstance().Dispatcher.addEventListener(UIMainScene.ON_OPEN_DONE, OnRecieveOpen); KHUIManager.getInstance().Dispatcher.addEventListener(UIMainScene.ON_ClOSE, OnRecieveClose); KHUIManager.getInstance().Dispatcher.addEventListener(UIEventDef.ON_PLAY_ClOSE_ANIM, OnRecieveClose); stayTimeSpan = Time.realtimeSinceStartup + stayIntervel; }
public void ClearUIRef() { _needHideObj = null; }
void RefereshMainScene() { var tMainModel = KHPluginManager.Instance.GetModel("MainUI") as MainUIModel; bool tSceneChanged = false; //找到当前是否已经存在的纹理层 Transform tCurSceneInstTrans = null; for (int i = 0, max = this.SceneRoot.childCount; i < max; ++i) { Transform tTrans = this.SceneRoot.GetChild(i); if (tTrans.gameObject != this.sceneLogic && !tTrans.gameObject.name.Equals("IPX_BOUND")) { if (null == tCurSceneInstTrans) { tCurSceneInstTrans = tTrans; } else { Debuger.LogError("场景层级结构错误, 有多个纹理层"); } } } //要销毁的旧场景 GameObject tOldSceneTransToDestroy = null; //当前场景挂着的GameObject GameObject tCurSceneInstGo = (tCurSceneInstTrans != null) ? (tCurSceneInstTrans.gameObject) : (null); //当前场景所需 (must not null.) string tCurSceneResPath = MainSceneLoader.Instance.CurShouldUseSceneResPath(); if (string.IsNullOrEmpty(tCurSceneResPath)) { Debuger.LogError("当前场景资源无配置"); return; } //当前实例指向 string tCurUsingResPath = MainSceneLoader.Instance.CurUsingResPath; //如果当前所需场景和MainUi上已经挂接的实例不相同 if (tCurSceneResPath != tCurUsingResPath) { //生成新场景, 此处必定保证非空 GameObject tScenePrefab = MainSceneLoader.Instance.CurShouldUseSceneGo(); if (tScenePrefab) { KHResource.unLoadRes(tCurSceneResPath, null); KHResource.unLoadRes(tCurUsingResPath, null); GameObject tSceneInstance = GameObject.Instantiate(tScenePrefab) as GameObject; //append tSceneInstance.transform.parent = this.SceneRoot; tSceneInstance.transform.localPosition = Vector3.zero; tSceneInstance.transform.localScale = Vector3.one; //销毁旧场景 tOldSceneTransToDestroy = tCurSceneInstGo; tCurSceneInstGo = tSceneInstance; MainSceneLoader.Instance.CurUsingResPath = tCurSceneResPath; MainSceneLoader.Instance.CurUsingInstance = tSceneInstance; tSceneChanged = true; Debuger.Log(string.Format("新场景加载完毕_ tCurSceneResPath:{0} | tCurUsingResPath:{1}", (tCurSceneResPath != null) ? tCurSceneResPath : "null", (tCurUsingResPath != null) ? tCurUsingResPath : "null")); } else { Debuger.LogError("未读取到场景资源资源"); return; } } else { Debuger.Log(string.Format("场景实例不变_ {0}", (tCurUsingResPath != null) ? tCurUsingResPath : "null")); return; } SceneUIObject tSceneWarrper = new SceneUIObject(); tSceneWarrper.AddScene(sceneLogic, true); if (tCurSceneInstGo != null) { tSceneWarrper.AddScene(tCurSceneInstGo); tSceneWarrper.SetCurrScene(tCurSceneInstGo); UIMainScene.getInstance()._initialize(tSceneWarrper); } //发出场景变换事件 if (tSceneChanged) { tMainModel.Dispatcher.dispatchEvent(new KHEvent(MainUIModel.EVT_MAINSCNENE_CHANGED)); } if (tOldSceneTransToDestroy != null) { GameObject.Destroy(tOldSceneTransToDestroy.gameObject); } }