SceneChangeHelper.cs 1.2 KB

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