摄像机区域的架构改动

This commit is contained in:
2026-05-15 14:47:24 +08:00
parent 1b37297585
commit f264329751
3591 changed files with 1687228 additions and 446503 deletions

View File

@@ -0,0 +1,31 @@
using Animancer;
namespace BaseGames.Animation
{
/// <summary>
/// 静态工具类:将 AnimationEventConfigSO 中声明的事件注入 Animancer ClipTransition。
/// 使用 Animancer Pro APIClipTransition.Events.SetCallback(normalizedTime, Action)。
/// 调用时机MonoBehaviour.Awake在 Animancer 播放前完成绑定)。
/// </summary>
public static class AnimationEventBinder
{
/// <summary>
/// 将 config 中的所有事件回调注入到 clip 的 Animancer 事件系统。
/// </summary>
/// <param name="clip">目标 Animancer ClipTransition。</param>
/// <param name="config">事件配置资产null 时静默跳过)。</param>
/// <param name="receiver">事件接收者(通常是同一 MonoBehaviour。</param>
public static void Bind(ClipTransition clip, AnimationEventConfigSO config, IAnimationEventHandler receiver)
{
if (clip == null || config == null || receiver == null) return;
foreach (var entry in config.SortedEvents)
{
// 捕获循环变量,避免闭包陷阱
var captured = entry;
clip.Events.Add(captured.normalizedTime, () =>
receiver.HandleEvent(captured.eventType, captured.data));
}
}
}
}