问题
在使用Animator动画机时
为了方便我会直接使用Trigger参数
虽然方便,但这样会有一个隐患发生
例如我想要进行翻滚动画时,我的按键操作按下了不止一次的触发
导致我只想要一次的翻滚,结果却翻滚了好几次,这显然是一个会经常出现的问题
解决思路
隆重介绍
特有函数 :
OnStateEnter()
OnStateExit()
从英文含义我们就可以知道,这个是在动画状态进入和离开时会触发的函数
那么我们的思路就是利用animator.ResetTrigger()来重置Trigger参数的触发
同时搭配foreach遍历,我们就可以轻松重置每一个Trigger参数啦
需要注意的是,该特有函数必须继承StateMachineBehaviour才能使用
代码部分
using UnityEngine;
public class FSMClearSignals : StateMachineBehaviour
{
public string[] clearAtEnter;
public string[] cleatAtExit;
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
foreach (var signal in clearAtEnter)
{
animator.ResetTrigger(signal);//重置trigger
}
}
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
foreach (var signal in clearAtEnter)
{
animator.ResetTrigger(signal);//重置trigger
}
}
}
使用方法
在任意动画中添加该脚本,并在数组中填写你想要清除的Trigger参数名即可