是否可以在 Unity 中获取精灵表动画的当前帧?
Posted
技术标签:
【中文标题】是否可以在 Unity 中获取精灵表动画的当前帧?【英文标题】:Is it possible to get the current frame of a sprite sheet animation in Unity? 【发布时间】:2020-08-29 22:48:26 【问题描述】:我在 Unity (2019.2.21f1) 中有一个简单的 12 帧 2D 精灵动画,我通过制作精灵表并使用 Unity 精灵编辑器将精灵表分割成动画的各个帧来创建它。
我想在动画的第 3、7 和 10 帧上执行某些代码。
是否有可能在代码 (C#) 中获取当前正在动画中显示的帧?或者是否有其他方法可以在显示第 3、7 或 10 帧时执行代码?
【问题讨论】:
使用动画事件。 docs.unity3d.com/Manual/script-AnimationWindowEvent.html 嗨 Ben Rubin,应该可以,谢谢 :) 如果您愿意将此作为答案,我很乐意接受 - 它不会直接回答标题中的问题,但是它回答了我的 OP 最后一句话中的问题,并为我提供了我想要的功能。 很高兴听到它解决了您的问题,我会发布它作为答案。 【参考方案1】:您可以确定第三帧何时纯在代码中运行,但推荐(而且更简单)的方法是使用 Animation Events。
下面是在动画的第三帧调用一些代码的示例。我圈出了您必须单击以添加动画事件的按钮。添加事件后,将其拖到您希望它执行的帧或时间(也圈出)。然后点击动画事件并输入事件执行时要调用的函数的名称。您可以选择将参数传递给您的函数,方法是在函数名称下方输入参数。
当事件触发时,它会在附加到同一个游戏对象的脚本上查找该函数。然后你可以在这个函数中做任何你想做的事情。如果您在其中一个名称中有拼写错误,或者您的游戏对象没有附加匹配的函数,那么当该事件触发时,您将在 Unity 编辑器中收到错误消息。
我下面的例子会在动画到达第三帧时调用DoSomethingOnThirdFrame
。
【讨论】:
以上是关于是否可以在 Unity 中获取精灵表动画的当前帧?的主要内容,如果未能解决你的问题,请参考以下文章
更改正在动画的精灵表时 HTML5 Canvas 挂起(逐帧播放视频)