using GFGGame; namespace ET { public static class SceneChangeHelper { // 场景切换协程 public static async ETTask SceneChangeTo(Scene zoneScene, string sceneName, long sceneInstanceId) { CurrentScenesComponent currentScenesComponent = zoneScene.GetComponent(); currentScenesComponent.Scene?.Dispose(); // 删除之前的CurrentScene,创建新的 Scene currentScene = SceneFactory.CreateCurrentScene(sceneInstanceId, zoneScene.Zone, sceneName, currentScenesComponent); // 等待CreateMyUnit的消息 WaitType.Wait_CreateMyUnit waitCreateMyUnit = await zoneScene.GetComponent().Wait(); M2C_CreateMyUnit m2CCreateMyUnit = waitCreateMyUnit.Message; Unit unit = UnitFactory.Create(currentScene, m2CCreateMyUnit.Unit); GameGlobal.myNumericComponent = unit.GetComponent(); // 通知等待场景切换的协程 zoneScene.GetComponent().Notify(new WaitType.Wait_SceneChangeFinish()); } } }