SceneChangeStart_AddComponent.cs 1.2 KB

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