gpt4 book ai didi

unity3d - 统一机制。如何在禁用游戏对象之前重置动画

转载 作者:行者123 更新时间:2023-12-04 10:19:13 25 4
gpt4 key购买 nike

统一 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

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

更新

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

正如您所提到的,编写以下代码
private void Start()
{
Animator.keepAnimatorControllerStateOnDisable = true;
}

private void OnDisable()
{
Animator.Play("normalState",0,0f);
}

关于unity3d - 统一机制。如何在禁用游戏对象之前重置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60941301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com