unity3d - Unity OnStateExit StateMachineBehaviour 永远不会被调用
问题描述
脚本如下:
using UnityEngine;
public class TrackHelpDuration : StateMachineBehaviour
{
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("entering state");
if (GameSession.timeSpentOnRemedialHint > 0)
GameSession.updateTime(11);
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("exiting state");
if (GameSession.timeSpentOnRemedialHint > 0)
GameSession.updateTime(11);
}
}
虽然OnStateEnter
按预期工作,但OnStateExit
永远不会被调用。我如何使它工作?
我发现一个问题说同样的话,但那是 3 年前。 https://issuetracker.unity3d.com/issues/mecanim-onstateexit-method-never-gets-called-when-next-state-becomes-active
解决方案
这是一个迟到的答案,但可能会帮助其他有同样问题的人。
override public void OnStateExit
回调将在“状态更改”时自动调用,这意味着当“当前状态退出”时,您可能假设它在动画完成时调用。
TL;博士。
就调用该函数而言,您必须将动画状态移动到另一个状态。希望能帮助到你
推荐阅读
- windows - 使用批处理文件重命名
- django - 如何创建 Django 数据库备份?
- bash - 在 Bash 中出现 5 次逗号后向文本文件添加新行
- python - tensorflow通过随机因子调整图像大小
- http - 修复 HttpHeader 中的 CRLF 序列时遇到 NoClassDefFoundError
- javascript - angular 2 - ngFor 动态函数
- php - 正则表达式函数将模式的第二次出现添加到第一次出现
- angular - Angular:将对象传递给指令
- php - 从 CSV 文件计算价格 - PHP/JS
- keras - Keras 中的按列操作