SceneChangeStart_AddComponent.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. using Cysharp.Threading.Tasks;
  2. using ET;
  3. using UnityEngine;
  4. namespace ET.Client
  5. {
  6. [Event]
  7. public class SceneChangeStart_AddComponent : BEvent<EventType.SceneChangeStart>
  8. {
  9. protected override async ETTask OnEvent(EventType.SceneChangeStart 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. PlayerComponent.Instance.ClientScene().GetComponent<ObjectWait>().Notify( new Wait_SceneChangeFinish() );
  24. UIHelper.HideLoadingUI();
  25. }
  26. }
  27. }