Files
Cielonos/Assets/Scripts/SLSUtilities/FunctionalAnimation/FuncAnimInteractionsGuideWindow.cs
SoulliesOfficial 39b43680a9 爆更
2026-07-18 03:16:20 -04:00

66 lines
2.9 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.
#if UNITY_EDITOR
using System.Text;
using UnityEditor;
using UnityEngine;
namespace SLSUtilities.FunctionalAnimation
{
public class FuncAnimInteractionsGuideWindow : EditorWindow
{
private Vector2 scrollPosition;
public static void ShowWindow()
{
FuncAnimInteractionsGuideWindow window =
GetWindow<FuncAnimInteractionsGuideWindow>(true, "FuncAnim Interactions 使用说明");
window.minSize = new Vector2(560f, 360f);
window.Show();
}
private void OnGUI()
{
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
EditorGUILayout.LabelField("FuncAnim Interactions 使用说明", EditorStyles.boldLabel);
EditorGUILayout.Space(8f);
DrawSection(
FuncAnimInteractionKeys.SpecifiedActionDisruption,
"用途:限制当前动作只能在指定的 Custom Interval 内被特定动作打断。",
"配置:在当前 FuncAnimData 的 intervals 中添加 Custom intervalintervalName 必须为 SpecifiedActionDisruption然后在 interactions 中添加 Key = SpecifiedActionDisruption。",
"Values填写允许打断当前动作的新动作 animationName。",
"运行时效果:如果新动作在 Values 中,只有当前时间处于 SpecifiedActionDisruption interval 时才能播放。");
DrawSection(
FuncAnimInteractionKeys.ExemptedPayloadAnimPairOnSelfOverrideDisruption,
"用途:当前动作被 SelfOverride 切换到指定动作时,跳过指定的 disruption payload。",
"Values 格式PayloadEventName:TargetAnimationName。",
"PayloadEventName 是当前动作 disruptionEvents 中要跳过的 payload eventName。如果 payload 没有 eventName也可以填写 payload 类型显示名TargetAnimationName 是即将播放的新动作 animationName。",
"可以使用 *:TargetAnimationName 跳过切换到该动作时的全部 disruption payload。",
"典型用法FutureWand 的 HoldAttackStart -> HoldAttackLoop 是正常蓄力链路,不应清理蓄力 VFX但 HoldAttackStart -> Dash/Dodge 仍应清理。");
EditorGUILayout.EndScrollView();
}
private static void DrawSection(string title, params string[] lines)
{
EditorGUILayout.LabelField(title, EditorStyles.boldLabel);
StringBuilder description = new StringBuilder();
for (int i = 0; i < lines.Length; i++)
{
if (i > 0)
{
description.AppendLine();
}
description.Append(lines[i]);
}
EditorGUILayout.HelpBox(description.ToString(), MessageType.None);
EditorGUILayout.Space(10f);
}
}
}
#endif