动画控制器
使用动画事件
您可以使用动画事件来增加动画剪辑的实用性。 动画事件允许您在时间轴中的指定点调用对象脚本中的函数。
动画事件调用的函数也可以接受一个参数。 该参数可以是 float、string、int、对象引用或 AnimationEvent 对象。 AnimationEvent 对象具有允许将浮点、字符串、整数和对象引用一次性传递给函数的成员变量,以及有关触发函数调用的事件的其他信息。
// 此 C# 函数可由动画事件调用
public void PrintFloat (float theValue) {
Debug.Log ("PrintFloat is called with a value of " + theValue);
}
要将动画事件添加到剪辑当前播放头位置,请单击“事件”按钮。 要将动画事件添加到动画中的任意点,请在您希望触发事件的时间点双击 __event__ 行。 添加事件后,您可以拖动鼠标来重新定位事件。 要删除事件,请选择该事件并按删除键unity按钮动画,或者右键单击该事件并选择删除事件。
动画事件 __ 显示在 __ 事件行 __ 中。 通过双击 __event line__ 或使用 Event__ 按钮添加新的 __animation event__。
添加事件时,检查器窗口会显示多个字段。 这些字段指定要调用的函数的名称以及要传递给它的参数值。
动画事件检查器窗口
添加到剪辑的事件会在事件行中显示一个标记。 将鼠标悬停在标记上可显示包含函数名称和参数值的工具提示。
您可以选择并操作时间线中的多个事件。
要选择时间线中的多个事件,请按住 Shift 键并一次选择一个事件标记,将它们添加到您的选择中。 您还可以在它们之间拖动一个选择框; 在事件标记区域内单击并拖动,如下图:
例子
以下示例演示了如何向简单的游戏对象添加动画事件。 执行完所有步骤后,立方体在播放模式期间沿 x 轴向前和向后移动音效,并在 0.8 秒处每 1 秒在控制台中显示一次事件消息。
此示例需要一个包含 PrintEvent() 函数的小脚本。 此函数打印一条调试消息,其中包含字符串(“called at:”)和时间:
// 此 C# 函数可由动画事件调用
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public void PrintEvent(string s) {
Debug.Log("PrintEvent: " + s + " called at: " + Time.time);
}
}
使用此示例代码创建一个脚本文件,并将其放置在 Project 文件夹中(在 Unity 的 Project 窗口中右键单击并选择 Create > __C# Script__,然后将上述代码示例复制并粘贴到文件中并保存)。
在 Unity 中,创建一个立方体游戏对象(菜单:__GameObject__ > 3D 对象 > __Cube__)。 要将新的脚本文件添加到多维数据集中,请将文件从“项目”窗口拖放到“检查器”窗口中。
选择立方体并打开“动画”窗口(菜单:__Window__ > __Animation__)。 设置 x 坐标的 __position__ 曲线。
动画窗口
接下来unity按钮动画,将 x 坐标设置动画,增加到大约 0.4 秒,在 1 秒内返回到零氛围,然后在大约 0.8 秒时创建动画事件。 按“播放”运行动画。
具有多个运动部件的物体
动画控制器
文章来源:https://docs.unity3d.com/cn/2018.2/Manual/animeditor-AnimationEvents.html