Files
Cielonos/Assets/Scripts/MainGame/Base/FunctionalAnimation/Payloads/ApplyBuff.cs

44 lines
1.4 KiB
C#
Raw Normal View History

2026-06-27 12:52:03 -04:00
using System;
using Cielonos.MainGame.Buffs.Character;
using Cielonos.MainGame.Characters;
using Sirenix.OdinInspector;
using SLSUtilities.FunctionalAnimation;
using UnityEngine;
namespace Cielonos.MainGame.Base.FunctionalAnimation.Payloads
{
/// <summary>
/// FuncAnim Payload在动画事件触发时为当前的动画执行者施加指定的 CharacterBuff。
/// 完全兼容 ICharacterBuffFactory 的 Odin 多态编辑架构。
/// </summary>
[Serializable]
[EventColor(0.2f, 0.9f, 0.4f)]
public class ApplyBuff : FuncAnimPayloadBase
{
public override string NameForInspector => "Apply Buff";
[Tooltip("选择要施加的 Buff 类型并配置其参数。")]
[SerializeReference]
public ICharacterBuffFactory buffFactory;
public override void Invoke()
{
if (buffFactory == null)
{
Debug.LogWarning("[ApplyBuffPayload] 未配置 Buff 工厂,无法施加 Buff。");
return;
}
if (Executor is CharacterBase characterBase)
{
// 创建并施加 Buff (发起者和承受者都是自身)
buffFactory.Create().Apply(characterBase, characterBase);
}
else
{
Debug.LogWarning("[ApplyBuffPayload] 动画执行者不是 CharacterBase无法施加 CharacterBuff。");
}
}
}
}