Files
Cielonos/Assets/Scripts/SLSUtilities/FunctionalAnimation/FuncAnimPayloadBase.cs
SoulliesOfficial f26f9fd374 爆更
2026-03-20 12:07:44 -04:00

82 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using Sirenix.OdinInspector;
using UnityEngine;
namespace SLSUtilities.FunctionalAnimation
{
/// <summary>
/// (全新) 自定义Attribute用于为事件指定一个在时间轴上的颜色
/// </summary>
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class EventColorAttribute : Attribute
{
public Color Color { get; }
public EventColorAttribute(float r, float g, float b, float a = 1.0f)
{
this.Color = new Color(r, g, b, a);
}
}
/// <summary>
/// 所有技能事件负载(Payload)的抽象基类。
/// 技能事件的具体逻辑和参数都定义在它的子类中。
/// </summary>
[Serializable]
public abstract class FuncAnimPayloadBase
{
[Tooltip("在时间轴上显示的事件名称 (如果为空,则显示类名)")]
[PropertyOrder(-1)] // 把它显示在最上面
[HideInInspector]
public string eventName;
[NonSerialized]
public FuncAnimData parentData;
[NonSerialized]
public RuntimeFuncAnim runtimeFuncAnim;
protected IFuncAnimExecutor character => runtimeFuncAnim?.executor;
protected FuncAnimPayloadBase()
{
}
public virtual void Invoke()
{
}
public virtual string NameForInspector => GetType().Name;
}
[Serializable]
public abstract class FuncAnimPayloadBase<T> : FuncAnimPayloadBase
{
public T result;
protected FuncAnimPayloadBase()
{
}
public new virtual T Invoke()
{
return result;
}
}
/// <summary>
/// 一个简单的日志事件,用于调试
/// </summary>
[EventColor(1.0f, 1.0f, 0.2f)]
public class LogEvent : FuncAnimPayloadBase
{
public string message = "Hello World!";
public override void Invoke()
{
Debug.Log(message);
}
}
}