- 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.
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using UnityEngine;
|
||
using BaseGames.Core.Events;
|
||
using BaseGames.Feedback;
|
||
|
||
namespace BaseGames.UI
|
||
{
|
||
/// <summary>
|
||
/// 场景切换黑屏控制器(Persistent 场景)。
|
||
/// 监听 EVT_FadeOutRequest / EVT_FadeInRequest,调用对应 SceneFeedback.Play()。
|
||
/// 实际视觉效果(黑幕、淡入淡出动画等)完全由 SceneFeedback 内部的 MMF_Player 配置决定。
|
||
///
|
||
/// 挂载位置:Persistent 场景 → [UI] → SYS_SceneFade
|
||
///
|
||
/// 配置步骤:
|
||
/// 1. 创建两个带 MMF_Player 的 SceneFeedback(淡出 / 淡入),在 MMF_Player 中配置所需效果
|
||
/// 2. 将淡出 SceneFeedback 拖入 _fadeOut,淡入 SceneFeedback 拖入 _fadeIn
|
||
/// 3. 将 EVT_FadeOutRequest / EVT_FadeInRequest 拖入对应频道槽
|
||
/// 4. MMF_Player 总时长应 ≤ SceneService._sceneFadeDuration(默认 0.4 s)
|
||
/// </summary>
|
||
[AddComponentMenu("BaseGames/UI/Scene Fade Controller")]
|
||
public class SceneFadeController : MonoBehaviour
|
||
{
|
||
[Header("Feedback")]
|
||
[SerializeField] private SceneFeedback _fadeOut;
|
||
[SerializeField] private SceneFeedback _fadeIn;
|
||
|
||
[Header("事件频道")]
|
||
[SerializeField] private VoidEventChannelSO _onFadeOutRequest;
|
||
[SerializeField] private VoidEventChannelSO _onFadeInRequest;
|
||
|
||
private readonly CompositeDisposable _subs = new();
|
||
|
||
private void OnEnable()
|
||
{
|
||
_onFadeOutRequest?.Subscribe(OnFadeOut).AddTo(_subs);
|
||
_onFadeInRequest?.Subscribe(OnFadeIn).AddTo(_subs);
|
||
}
|
||
|
||
private void OnDisable() => _subs.Clear();
|
||
|
||
private void OnFadeOut() => _fadeOut?.Play();
|
||
private void OnFadeIn() => _fadeIn?.Play();
|
||
}
|
||
}
|