namespace ET { public static class SceneChangeHelper { // 场景切换协程 public static void SceneChangeTo(Scene zoneScene, M2C_CreateMyUnit msg) { zoneScene.RemoveComponent(); CurrentScenesComponent currentScenesComponent = zoneScene.GetComponent(); currentScenesComponent.Scene?.Dispose(); // 删除之前的CurrentScene,创建新的 Scene currentScene = SceneFactory.CreateCurrentScene(msg.SceneInstanceId, zoneScene.Zone, msg.SceneName, currentScenesComponent); //UnitComponent unitComponent = currentScene.AddComponent(); //unit 初始化 UnitComponent unitComponent = currentScene.AddComponent(); Unit unit = UnitFactory.Create(currentScene, msg.Unit); unitComponent.Add(unit); // 可以订阅这个事件中创建Loading界面 Game.EventSystem.Publish(new EventType.SceneChangeStart() {ZoneScene = zoneScene}); /* // 等待CreateMyUnit的消息 WaitType.Wait_CreateMyUnit waitCreateMyUnit = await zoneScene.GetComponent().Wait(); M2C_CreateMyUnit m2CCreateMyUnit = waitCreateMyUnit.Message; Unit unit = UnitFactory.Create(currentScene, m2CCreateMyUnit.Unit); unitComponent.Add(unit); zoneScene.RemoveComponent(); Game.EventSystem.Publish(new EventType.SceneChangeFinish() {ZoneScene = zoneScene, CurrentScene = currentScene}); // 通知等待场景切换的协程 zoneScene.GetComponent().Notify(new WaitType.Wait_SceneChangeFinish()); */ } } }