feat: Enhance scene transition management and HUD scaffolding

- Added RequestTransition method to ISceneService for direct scene transition requests without needing Inspector SO references.
- Updated DoorTransition and RoomTransition to utilize the new RequestTransition method via ServiceLocator.
- Introduced SceneFadeController to manage scene fade effects during transitions, with event channel integration for fade requests.
- Created HUDScaffoldWizard to automate HUD Canvas setup, including various UI elements and event channel bindings.
- Updated assembly definitions to include necessary dependencies for new UI components.
- Added Streaming assets for budget configuration to optimize scene loading and memory management.
This commit is contained in:
2026-06-03 08:08:27 +08:00
parent d27ae9407d
commit 613f2a4d13
15 changed files with 1285 additions and 64 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections;
using Animancer;
using BaseGames.Core;
using BaseGames.Core.Events;
using UnityEngine;
@@ -48,9 +49,6 @@ namespace BaseGames.World
[SerializeField] private bool _requiresKeyItem;
[SerializeField] private string _requiredItemId;
[Header("事件频道")]
[SerializeField] private SceneLoadRequestEventChannelSO _onSceneLoadRequest;
[Header("世界状态")]
[SerializeField] private WorldStateRegistry _worldState;
@@ -95,14 +93,23 @@ namespace BaseGames.World
yield return state; // 等待动画完成
}
_onSceneLoadRequest?.Raise(new SceneLoadRequest
var request = new SceneLoadRequest
{
SceneName = _targetSceneAddress,
EntryTransitionId = _targetTransitionId,
TransitionType = _transitionType,
ShowLoadingScreen = _transitionType == TransitionType.Scene,
IsRespawn = false,
});
};
var sceneService = ServiceLocator.GetOrDefault<ISceneService>();
if (sceneService != null)
{
sceneService.RequestTransition(request);
yield break;
}
Debug.LogWarning("[DoorTransition] 无法发送过渡请求ISceneService 未在 ServiceLocator 中注册。", this);
}
/// <summary>