作为播放动画的一部分,AnimationEvent 可用于调用类似于 SendMessage 的脚本函数。
动画事件支持零个或一个参数的函数。 该参数可以是浮点、int、字符串、对象引用或 AnimationEvent。
// Animation Event example // Small example that can be called on each specified frame. // The code is executed once per animation loop.
using UnityEngine; using System.Collections;
public class Example : MonoBehaviour { public void PrintEvent() { Debug.Log("PrintEvent"); } }
下面是一个更详细的示例,演示了
创建动画的更复杂方式。在该脚本示例中,通过访问 Animator
组件从中获得了一个 Clip
。(该剪辑是在 Animation
窗口中设置的。)该剪辑持续 2 秒钟。然后创建了一个
AnimationEvent
,并且设置了参数。参数中包括
将处理此事件的函数 PrintEvent()
。然后此事件
被添加到该剪辑。这一切都发生在 Start()
中。启动了该游戏后,
在 1.3 秒后调用此事件,然后每 2 秒钟重复此事件。
// Add an Animation Event to a GameObject that has an Animator using UnityEngine; using System.Collections;
public class Example : MonoBehaviour { public void Start() { // existing components on the GameObject AnimationClip clip; Animator anim;
// new event created AnimationEvent evt; evt = new AnimationEvent();
// put some parameters on the AnimationEvent // - call the function called PrintEvent() // - the animation on this object lasts 2 seconds // and the new animation created here is // set up to happen 1.3s into the animation evt.intParameter = 12345; evt.time = 1.3f; evt.functionName = "PrintEvent";
// get the animation clip and add the AnimationEvent anim = GetComponent<Animator>(); clip = anim.runtimeAnimatorController.animationClips[0]; clip.AddEvent(evt); }
// the function to be called as an event public void PrintEvent(int i) { print("PrintEvent: " + i + " called at: " + Time.time); } }
animationState | 触发了此事件的动画状态(只读)。 |
animatorClipInfo | 与此事件相关的动画器剪辑信息(只读)。 |
animatorStateInfo | 与此事件相关的动画器状态信息(只读)。 |
floatParameter | 浮点参数,保存在事件中并将发送到函数。 |
functionName | 将调用的函数的名称。 |
intParameter | Int 参数,保存在事件中并将发送函数。 |
isFiredByAnimator | 如果动画器组件已触发了该动画事件,则返回 true。 |
isFiredByLegacy | 如果动画组件已触发了该动画事件,则返回 true。 |
messageOptions | 函数调用选项。 |
objectReferenceParameter | 对象引用参数,保存在事件中并将发送到函数。 |
stringParameter | 字符串参数,保存在事件中并将发送到函数。 |
time | 将触发该事件的时间。 |
AnimationEvent | 创建新动画事件。 |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.