如何使作为动画剪辑的一部分发生的更改永久化?

How can I make changes that happen as part of an animation clip permanent?

我想制作卡片从正面翻转到背面的动画。两张牌面都有不同的精灵作为背景。

我的卡上附加了一个 Animator 组件。动画师将卡片绕 z 轴旋转 180 度,并在旋转 90 度时更改背景精灵。一切正常。

问题是一旦动画剪辑完成,精灵就会变回原来的精灵。我尝试将动画事件添加到动画剪辑事件函数的末尾并让动画剪辑执行 GetComponent<SpriteRenderer>().sprite = ...,但这也不起作用。即使我在 Unity Inspector 中更改卡片的 sprite,那也不起作用(sprite 实际上并没有改变)。

这是我的动画师的样子(Idle 动画没有附加剪辑):

这是其中一个动画的样子:

有没有一种方法可以让我的动画师更改我的游戏对象的精灵,然后让游戏对象保持新的精灵直到再次更改?我知道我可以通过协同程序以编程方式完成它,但如果没有必要,我不想做一个解决方法。

将动画剪辑的环绕模式更改为 ClampForever。

https://docs.unity3d.com/ScriptReference/WrapMode.ClampForever.html

Afaik 你只需要禁用 States

Write Defaults

这意味着如果对于 属性 在此状态下没有可用的关键帧,则使用非动画模型中的默认关键帧(无论您在编辑模式中看到什么,而不是在 Animator 预览中)。

因此,如果您禁用它,此状态将使用它之前从动画中获得的任何当前 属性 值,而不是非动画值。