public override void OnCloseWindow() { base.OnCloseWindow(); KHResource.unLoadRes(curActorPath, OnLoaded); for (int i = 0; i < actorEffectList.Count; ++i) { KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback); } Transform tTrans = CharacterPos; if (tTrans != null) { UIEventListener.Get(tTrans.gameObject).onClick = null; } if (curActorSnd != null) { KHAudioManager.RemoveSound(curActorSnd); } if (this.CurActorSandAni != null) { this.CurActorSandAni.gameObject.SetActive(false); this.CurActorSandAni.StopPlayback(); } }
public void OnLoaded(string url, Object obj, LOADSTATUS result, object extra) { if (obj != null) { curActorObj = Instantiate(obj as GameObject) as GameObject; MainPageActorEffectComp comp = curActorObj.GetComponent <MainPageActorEffectComp>(); if (comp != null) { if (comp.effectIds != null) { actorEffectList.AddRange(comp.effectIds); string effPath = null; //for (int j = 0; j < actorEffectList.Count; ++j ) if (actorEffectList.Count > curEffectResIndex) { effPath = string.Format("Effect/{0}", actorEffectList[curEffectResIndex]); KHResource.LoadRes(effPath, OnEffectLoadedCallback); } } } //var aInfo1 = KHDataManager.CONFIG.NinjaDatas[actorId]; UpdateActorPrefabSet(actorId, curActorCfg, CharacterPos); } }
/// <summary> /// 更新主界面的角色 /// </summary> /// <param name="e"></param> void UpdateActor(KHEvent e) { actorId = int.Parse(e.data.ToString()); if (!RemoteModel.Instance.NinjaCollection.TryGetNinjaData(actorId, out curActorCfg, false)) { Debuger.LogWarning("更换了不存在的忍者. id=" + actorId); return; } if (curActorObj != null) { Destroy(curActorObj); KHResource.unLoadRes(curActorPath, OnLoaded); for (int i = 0; i < actorEffectList.Count; ++i) { KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback); } } if (curActorCfg == null) { Debuger.LogWarning("更换了不存在的忍者. id=" + actorId); return; } if (!KHVer.IsOfflineMatch) { curActorPath = UIActorPrefabPath + curActorCfg.res_id; KHResource.LoadRes(curActorPath, OnLoaded); } actorEffectList.Clear(); curEffectResIndex = 0; }
public void OnEffectLoadedCallback(string url, Object obj, LOADSTATUS result, object extra) { if (curActorObj != null && curActorObj.activeSelf && actorEffectList.Count > 0) { curEffectResIndex++; //actorEffectList.RemoveAt(0); if (actorEffectList.Count > curEffectResIndex) { string path = string.Format("Effect/{0}", actorEffectList[curEffectResIndex]); KHResource.LoadRes(path, OnEffectLoadedCallback); } } }
private void ResetActorEffects() { if (curActorObj != null) { MainPageActorEffectComp comp = curActorObj.GetComponent <MainPageActorEffectComp>(); if (comp != null) { comp.Reset(); } } for (int i = 0; i < actorEffectList.Count; ++i) { KHResource.unLoadRes(string.Format("Effect/{0}", actorEffectList[i]), OnEffectLoadedCallback); } actorEffectList.Clear(); curEffectResIndex = 0; }
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); } }