Add WeaponFeedback component and AddressableManagerWindow meta file

- Implemented WeaponFeedback class for handling weapon-related feedbacks such as hit effects and attack sounds.
- Added meta file for AddressableManagerWindow to manage addressable assets.
- Included a new jump.data file for profiler data.
This commit is contained in:
2026-05-22 22:03:32 +08:00
parent 3e1f234ddc
commit b7baf7ad6a
44 changed files with 1783 additions and 1927 deletions

View File

@@ -24,6 +24,16 @@ namespace BaseGames.Core
/// <item><b>Room</b>:极短淡出(<see cref="_roomFadeDuration"/>),无加载画面。</item>
/// <item><b>Scene</b>:完整淡出(<see cref="_sceneFadeDuration"/>),显示加载画面。</item>
/// </list>
/// <para>
/// 完整加载时序(保证场景物体在显示前完成状态初始化):
/// <list type="number">
/// <item>淡出(黑幕遮挡)</item>
/// <item>Addressable 异步加载场景(场景物体 Awake / OnEnable 同步执行)</item>
/// <item>触发 <see cref="_onSceneWorldStateRestored"/>:通知场景物体从 WorldStateRegistry 恢复初始状态</item>
/// <item>等待一帧(保证所有场景物体 Start() 和事件处理器执行完毕)</item>
/// <item>淡入(显示已完成初始化的场景)</item>
/// </list>
/// </para>
/// </summary>
[DefaultExecutionOrder(-900)]
public class SceneService : MonoBehaviour, ISceneService
@@ -35,6 +45,12 @@ namespace BaseGames.Core
[SerializeField] private VoidEventChannelSO _onFadeInRequest;
[SerializeField] private VoidEventChannelSO _onFadeOutRequest;
[Tooltip("场景加载完成、WorldStateRegistry 已就绪后触发。\n" +
"场景内物体应订阅此事件,从 WorldStateRegistry 读取存档状态并应用(替代在 Start() 中读取)。\n" +
"触发后会等待一帧,确保所有处理器执行完毕,再执行淡入显示场景。\n" +
"对应 SOEVT_SceneWorldStateRestored")]
[SerializeField] private VoidEventChannelSO _onSceneWorldStateRestored;
[SerializeField] private SceneLoader _sceneLoader;
[Header("淡出时长")]
@@ -71,6 +87,14 @@ namespace BaseGames.Core
else
Debug.LogError("[SceneService] _sceneLoader 未赋值,场景加载中断。请在 Inspector 中绑定 SceneLoader 组件。");
// 通知WorldStateRegistry 已就绪,场景物体应在此帧内从中读取存档状态并应用初始状态。
// 订阅者WorldStateRegistrySaver、各场景 StateApplier 等)会在同一帧同步执行。
_onSceneWorldStateRestored?.Raise();
// 等待一帧:确保所有场景物体的 Start() 和事件处理器都已执行完毕,
// 场景物体处于正确的初始状态后再揭开黑幕,避免出现一帧状态错误的画面闪烁。
yield return null;
_onFadeInRequest?.Raise();
}