2

Unity 2019.3.7f1 .. 与我合作的艺术家使用 mecanim 系统 Animator 组件为一些 UI 内容制作了一些动画。

我用

Animator.SetTrigger("ParamaterName")

带有动画组件的游戏对象正在被动画化,我的一些脚本可能会禁用这些游戏对象。这可能在动画播放时发生。所以如果动画开始播放,假设动画使按钮变大,那么游戏对象就会被禁用。当游戏对象重新启用时(动画不再播放)它仍然很大。有没有办法告诉动画师恢复正常?我在 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);
}
4

1 回答 1

2

确保您的keepAnimatorControllerStateOnDisable未设置为 true。相反,您应该设置为 false 以清除 Animator 控制器的当前状态

Animator.keepAnimatorControllerStateOnDisable = false

这样,每当您使用 Animator 禁用对象时,Animator 状态及其所有参数都会恢复为默认值。


更新

从您的评论中可以理解默认设置是按钮更大。因此,它实际上是相反的(将其设置为 true,而不是 false)。

如您所述,编写以下代码

private void Start()
{
    Animator.keepAnimatorControllerStateOnDisable = true;
}

private void OnDisable()
{
    Animator.Play("normalState",0,0f);
}
于 2020-03-31T00:06:47.463 回答