SceneChangeStart_AddComponent.cs 1.1 KB

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