SceneChangeStart_AddComponent.cs 1.1 KB

123456789101112131415161718192021222324252627282930
  1. using Cysharp.Threading.Tasks;
  2. namespace ET.Client
  3. {
  4. [Event(SceneType.Client)]
  5. public class SceneChangeStart_AddComponent : AEvent<EventType.SceneChangeStart>
  6. {
  7. protected override async ETTask Run(Scene scene, EventType.SceneChangeStart args)
  8. {
  9. UIHelper.Create("Loading").Coroutine();
  10. Scene currentScene = scene.CurrentScene();
  11. var scnName = currentScene.Name;
  12. Log.Debug($"loading scene: {scnName}.");
  13. // 加载场景资源 & 加载
  14. var task = await YooAssetProxy.LoadSceneAsync("Scene_" + scnName);
  15. Log.Debug($"scene({task.SceneObject.name}) load finished.");
  16. await TimerComponent.Instance.WaitAsync(1000);
  17. UIHelper.Remove("Lobby");
  18. UIHelper.SetVisible("Loading", false);
  19. currentScene.AddComponent<OperaComponent>();
  20. await GameObjectPool.Instance.CacheSceneObject();
  21. // 通知等待场景切换的协程
  22. EventSystem.Instance.Publish<EventType.SceneLoadFinish>();
  23. scene.GetComponent<ObjectWait>().Notify(new Wait_SceneChangeFinish());
  24. }
  25. }
  26. }