M2C_StartSceneChangeHandler.cs 1.5 KB

123456789101112131415161718192021222324252627282930
  1. using GFGGame;
  2. using System;
  3. namespace ET
  4. {
  5. public class M2C_StartSceneChangeHandler : AMHandler<M2C_StartSceneChange>
  6. {
  7. protected override async ETTask Run(Session session, M2C_StartSceneChange message)
  8. {
  9. LogUtil.LogDev("Notify Wait_SceneChangeStart");
  10. // 通知等待场景切换的协程
  11. GameGlobal.zoneScene.GetComponent<ObjectWait>().Notify(new WaitType.Wait_SceneChangeStart());
  12. CurrentScenesComponent currentScenesComponent = GameGlobal.zoneScene.GetComponent<CurrentScenesComponent>();
  13. currentScenesComponent.Scene?.Dispose(); // 删除之前的CurrentScene,创建新的
  14. Scene currentScene = SceneFactory.CreateCurrentScene(message.SceneInstanceId, GameGlobal.zoneScene.Zone, message.SceneName, currentScenesComponent);
  15. // 等待CreateMyUnit的消息
  16. WaitType.Wait_CreateMyUnit waitCreateMyUnit = await GameGlobal.zoneScene.GetComponent<ObjectWait>().Wait<WaitType.Wait_CreateMyUnit>();
  17. M2C_CreateMyUnit m2CCreateMyUnit = waitCreateMyUnit.Message;
  18. Unit unit = UnitFactory.Create(currentScene, m2CCreateMyUnit.Unit);
  19. GameGlobal.myNumericComponent = unit.GetComponent<NumericComponent>();
  20. LogUtil.LogDev("Notify Wait_SceneChangeFinish");
  21. // 通知等待场景切换的协程
  22. GameGlobal.zoneScene.GetComponent<ObjectWait>().Notify(new WaitType.Wait_SceneChangeFinish());
  23. }
  24. }
  25. }