SceneChangeHelper.cs 1.1 KB

123456789101112131415161718192021222324
  1. using GFGGame;
  2. namespace ET
  3. {
  4. public static class SceneChangeHelper
  5. {
  6. // 场景切换协程
  7. public static async ETTask SceneChangeTo(Scene zoneScene, string sceneName, long sceneInstanceId)
  8. {
  9. CurrentScenesComponent currentScenesComponent = zoneScene.GetComponent<CurrentScenesComponent>();
  10. currentScenesComponent.Scene?.Dispose(); // 删除之前的CurrentScene,创建新的
  11. Scene currentScene = SceneFactory.CreateCurrentScene(sceneInstanceId, zoneScene.Zone, sceneName, currentScenesComponent);
  12. // 等待CreateMyUnit的消息
  13. WaitType.Wait_CreateMyUnit waitCreateMyUnit = await zoneScene.GetComponent<ObjectWait>().Wait<WaitType.Wait_CreateMyUnit>();
  14. M2C_CreateMyUnit m2CCreateMyUnit = waitCreateMyUnit.Message;
  15. Unit unit = UnitFactory.Create(currentScene, m2CCreateMyUnit.Unit);
  16. GameGlobal.myNumericComponent = unit.GetComponent<NumericComponent>();
  17. // 通知等待场景切换的协程
  18. zoneScene.GetComponent<ObjectWait>().Notify(new WaitType.Wait_SceneChangeFinish());
  19. }
  20. }
  21. }