多轮审查评估
This commit is contained in:
@@ -9,37 +9,21 @@ using BaseGames.Core.Events;
|
||||
namespace BaseGames.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Addressables 场景加载器。
|
||||
/// 监听 EVT_SceneLoadRequest,Additive 加载指定场景,完成后发布 EVT_SceneLoaded。
|
||||
/// 完整实现由 SceneService 包装调用。
|
||||
/// Addressables 场景加载器(纯工具组件,由 SceneService 驱动)。
|
||||
/// 采用"先加载新、再卸载旧"策略,保证加载失败时旧场景仍可用。
|
||||
/// 加载完成后发布 EVT_SceneLoaded 事件。
|
||||
/// 不直接订阅 SceneLoadRequestEventChannelSO;事件分发由 SceneService 负责。
|
||||
/// </summary>
|
||||
[DefaultExecutionOrder(-950)]
|
||||
public class SceneLoader : MonoBehaviour
|
||||
{
|
||||
[Header("Event Channels - Listen")]
|
||||
[SerializeField] private SceneLoadRequestEventChannelSO _onSceneLoadRequest;
|
||||
|
||||
[Header("Event Channels - Raise")]
|
||||
[SerializeField] private StringEventChannelSO _onSceneLoaded;
|
||||
|
||||
private string _currentRoomScene;
|
||||
private AsyncOperationHandle<SceneInstance> _currentHandle;
|
||||
private readonly CompositeDisposable _subs = new();
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_onSceneLoadRequest?.Subscribe(HandleRequest).AddTo(_subs);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
_subs.Clear();
|
||||
}
|
||||
|
||||
private void HandleRequest(SceneLoadRequest request)
|
||||
=> StartCoroutine(LoadSceneCoroutine(request));
|
||||
|
||||
private IEnumerator LoadSceneCoroutine(SceneLoadRequest request)
|
||||
public IEnumerator LoadSceneCoroutine(SceneLoadRequest request)
|
||||
{
|
||||
// 先加载新场景(Additive),成功后再卸载旧场景
|
||||
// 顺序保证:若加载失败,旧场景仍保持可用,不会出现无场景的空状态
|
||||
|
||||
Reference in New Issue
Block a user