LoadSceneEventHandle.cs 1021 B

1234567891011121314151617181920212223242526272829303132
  1. using Cysharp.Threading.Tasks;
  2. using ET;
  3. using UnityEngine;
  4. namespace ET.Client
  5. {
  6. [Event]
  7. public class LoadSceneEventHandle : BEvent<EventType.LoadSceneEvent>
  8. {
  9. protected override async ETTask OnEvent(EventType.LoadSceneEvent args)
  10. {
  11. UIHelper.ShowLoadingUI();
  12. var mapInfo = MapConfigCategory.Instance.Get( args.mapId );
  13. var scnName = mapInfo.MapName;
  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. UIHelper.Remove( "Lobby" );
  19. await GameObjectPool.Instance.CacheSceneObject( mapInfo.Id );
  20. Log.Debug( $"cache scene object end." );
  21. // 通知等待场景切换的协程
  22. EventSystem.Instance.Publish<EventType.SceneLoadFinish>();
  23. UIHelper.HideLoadingUI();
  24. }
  25. }
  26. }