Unity 2019.3.7f1 .. 与我合作的艺术家使用 mecanim 系统 Animator 组件为一些 UI 内容制作了一些动画。
我用
触发动画Animator.SetTrigger("ParamaterName")
带有动画组件的游戏对象(正在进行动画处理)可能会被我的一些脚本禁用。 动画播放时可能会发生这种情况。 因此,如果动画开始播放,并且假设动画使按钮变大,则游戏对象将被禁用。当游戏对象重新启用(动画不再播放)时,它仍然很大。 有没有办法告诉 Animator 恢复正常? 我已经在 GameObject 的脚本中的 onEnable 和 OnDisable 中尝试过类似的东西
Animator.keepAnimatorControllerStateOnDisable = false
Animator.Play("normalState",0,0f);
Animator.playbackTime = 0f;
Animator.Update(0f);
就其工作原理而言,这个 mecannim 的东西看起来就像一个黑匣子。我对此并不熟悉,因为我一直只是使用自己的库来制作我多年来一直使用的东西的动画。
编辑: 这就是解决方案...
private void Start()
{
Animator.keepAnimatorControllerStateOnDisable = true;
}
private void OnDisable()
{
Animator.Play("normalState",0,0f);
}
最佳答案
确保您的 keepAnimatorControllerStateOnDisable未设置为 true。相反,您应该设置为 false 以清除 Animator Controller 的当前状态
Animator.keepAnimatorControllerStateOnDisable = false
这样,每当您使用动画器禁用对象时,动画器状态及其所有参数都会恢复为默认值。
更新
从您的评论中可以了解到默认设置是让按钮更大。所以,实际上是相反的(将其设置为 true,而不是 false)。
正如您提到的,编写以下代码
private void Start()
{
Animator.keepAnimatorControllerStateOnDisable = true;
}
private void OnDisable()
{
Animator.Play("normalState",0,0f);
}
关于c# - 团结麦克尼姆。如何在禁用游戏对象之前重置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60941301/