using System; using System.Collections.Generic; using Sirenix.OdinInspector; using Sirenix.Serialization; using UnityEngine; namespace SLSUtilities.FunctionalAnimation { public enum DisruptionType { Must = 10000, Death = 9999, ForcedExternal = 1001, ForcedAction = 1000, NormalExternal = 501, NormalAction = 500, Movement = 100, None = 0 } [Serializable] public struct FuncAnimInfo { [Tooltip("代码中调用的动画名称")] public string animationName; [Tooltip("对应Animator中的State名称")] public string stateName; [Tooltip("这个技能是否使用Root Motion?")] public bool useRootMotion; [Tooltip("技能的Tag")] [ValueDropdown("GetTags")] public List tags; [Tooltip("技能的默认打断类型")] public DisruptionType disruptionType; [Tooltip("技能的播放速度,会临时参与对Animator.speed的改变")] public float overridePlaySpeed; //通常用来处理外部购买的动作素材,默认为1。 [Tooltip("从指定帧开始播放")] public int overrideStartFrame; //通常用来处理外部购买的动作素材,默认为0。 [Tooltip("技能是否受速度倍率影响 (例如:角色的攻速属性)")] public bool isAffectedBySpeedMultiplier; [Tooltip("技能描述,通常是给开发者看的,便于回忆,可以不写,不会在游戏中显示")] public string description; public FuncAnimInfo(string animationName, string stateName, bool useRootMotion, List tags, DisruptionType disruptionType, float overridePlaySpeed, int overrideStartFrame, bool isAffectedBySpeedMultiplier) { this.animationName = animationName; this.stateName = stateName; this.useRootMotion = useRootMotion; this.tags = tags; this.disruptionType = disruptionType; this.overridePlaySpeed = overridePlaySpeed; this.overrideStartFrame = overrideStartFrame; this.isAffectedBySpeedMultiplier = isAffectedBySpeedMultiplier; this.description = ""; } public static List GetTags() { return new List() { "Attack", "Skill" }; } } }