Files
Cielonos/Assets/Scripts/MainGame/Characters/Data/Presets/BaseAnimationGroup.cs
2026-05-10 11:47:55 -04:00

61 lines
3.1 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.Collections.Generic;
using Sirenix.OdinInspector;
using SLSUtilities.FunctionalAnimation;
using UnityEngine;
using UnityEngine.Serialization;
namespace Cielonos.MainGame.Characters
{
[CreateAssetMenu(fileName = "BaseAnimationGroup", menuName = "Cielonos/Characters/BaseAnimationGroup")]
public class BaseAnimationGroup : SerializedScriptableObject
{
public AnimationClip landIdle;
public List<AnimationClip> landIdleExtras;
public AnimationClip landWalkForward, landWalkBack, landWalkLeft, landWalkRight;
public AnimationClip landRunForward, landRunBack, landRunLeft, landRunRight;
public AnimationClip jumpStart;
public AnimationClip inAir;
public AnimationClip jumpLand;
public FuncAnimData getHitMediumFront, getHitMediumBack, getHitMediumLeft, getHitMediumRight;
public FuncAnimData getHitHeavyFront, getHitHeavyBack, getHitHeavyLeft, getHitHeavyRight;
public AnimationClip riseUpFront, riseUpBack, riseUpLeft, riseUpRight;
public AnimationClip incapacitation, death;
public FuncAnimData dash;
public FuncAnimData dodge;
public void SetUp(AnimationSubcontrollerBase animSc)
{
if (animSc is PlayerAnimationSubcontroller playerAnimSc)
{
FunctionalAnimationSubmodule funcAnimSm = animSc.fullBodyFuncAnimSm;
// 基础动画 clip由调用方管理批处理生命周期
playerAnimSc.SetOverride("LandIdle", landIdle);
playerAnimSc.SetOverride("LandWalkForward", landWalkForward);
playerAnimSc.SetOverride("LandWalkBack", landWalkBack);
playerAnimSc.SetOverride("LandWalkLeft", landWalkLeft);
playerAnimSc.SetOverride("LandWalkRight", landWalkRight);
playerAnimSc.SetOverride("LandRunForward", landRunForward);
playerAnimSc.SetOverride("LandRunBack", landRunBack);
playerAnimSc.SetOverride("LandRunLeft", landRunLeft);
playerAnimSc.SetOverride("LandRunRight", landRunRight);
playerAnimSc.SetOverride("JumpStart", jumpStart);
playerAnimSc.SetOverride("InAir", inAir);
playerAnimSc.SetOverride("JumpLand", jumpLand);
// FuncAnimData 通过 Reset → Add → SetOverride 进入同一缓冲区
if (getHitMediumFront) funcAnimSm.Reset(getHitMediumFront);
if (getHitMediumBack) funcAnimSm.Reset(getHitMediumBack);
if (getHitMediumLeft) funcAnimSm.Reset(getHitMediumLeft);
if (getHitMediumRight) funcAnimSm.Reset(getHitMediumRight);
if (getHitHeavyFront) funcAnimSm.Reset(getHitHeavyFront);
if (getHitHeavyBack) funcAnimSm.Reset(getHitHeavyBack);
if (getHitHeavyLeft) funcAnimSm.Reset(getHitHeavyLeft);
if (getHitHeavyRight) funcAnimSm.Reset(getHitHeavyRight);
if (dash) funcAnimSm.Reset(dash);
if (dodge) funcAnimSm.Reset(dodge);
}
}
}
}