统一机制。如何在禁用游戏对象之前重置动画
Unity Mecanim. How to reset animation before disabling a gameobject
统一 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);
}
确保您的 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);
}
统一 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);
}
确保您的 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);
}