Version: 1.7
语言 : 中文
StateMachineGraph 编辑
节点功能与分类

EventGraph 与 Function 编辑

EventGraph 和 Function 可辅助 AnimGraph,实现更灵活的动画输出控制。

EventGraph初始状态
EventGraph初始状态

默认 EntryNode:OnStart、OnUpdate、OnLateUpdate

EventGraph 包含三个默认 EntryNode,作为执行流的起点:

初始三种EntryNode
初始三种EntryNode
  • OnStart:在播放开始的首帧前执行,整个生命周期仅执行一次,以下是OnStart示例
OnStart示例
OnStart示例
  • OnUpdate:每帧执行,在 Internal Animation Update 之前触发

OnUpdate示例

  • OnLateUpdate:每帧执行,执行顺序遵循 Unity 的 LateUpdate Order 规则

OnLateUpdate的示例

OnAnimationGraphMove 节点

当连接执行逻辑时,该节点会每帧触发后续执行图。您可在执行图中处理动画系统生成的位移(deltaPosition)和旋转(deltaRotation),实现自定义 RootMotion。其功能与 OnAnimatorMove 类似。

注意事项

  • 当EventGraph中存在OnAnimationGraphMove节点时,动画系统将不会在内部修改游戏对象的RootMotion,而是由该节点的执行图逻辑控制。
  • 当存在多个OnAnimationGraphMove节点时,EventGraph会按照节点添加的顺序执行各个节点连接的执行图。

创建与使用

  • 通过搜索栏创建:MessageEntry -> OnAnimationGraphMove

  • 节点样式:

  • 使用示例:

CustomEvent(自定义事件)

创建与配置

  • 通过搜索栏创建:Event -> CustomEvent

  • 初始节点:

  • 重命名:双击节点(间隔一定时间)

  • 添加参数:在 Inspector 中点击 +

  • 配置参数:修改名称和类型(如 float 需搜索 Single)

  • 带参数节点

以下是自定义事件的示例,由C#脚本触发的,自定义参数为一个String类型参数

CustomEvent示例
CustomEvent示例

触发机制

在脚本中通过 AnimGraphManager.ActivateEvent(string name, List<Object> params) 触发:

  • 参数个数和类型必须严格匹配
  • 实际执行发生在 EventGraph 完成 OnUpdate 之后

AnimationEvent(动画事件)

专为 AnimationClip 事件定制:

  • 创建方式:

  • 节点样式(固定输出 float/int/string/object):

  • 重命名:双击节点(间隔一定时间)

以下是AnimationEvent(名为OnLand)的示例:

Animation的OnLand事件节点示例
Animation的OnLand事件节点示例

注意事项

事件名称必须与 AnimationClip 的 Event 名称完全一致:

Function 函数管理

函数可实现 EventGraph 逻辑复用:

创建与管理

  • 右键 Functions 区域创建:

  • 右键函数进行管理(删除/重命名):

函数结构

双击函数进入编辑界面,包含固定 Entry 和 Return 节点:

参数配置

  • 在 Inspector 中编辑 Entry/Return 节点参数:

  • 添加参数(方式同 CustomEvent):

  • 修改参数类型:

  • 示例:添加 string 类型参数 “name” 后节点的样式如下:

右键复制或删除形参

  • 形参或返回值可以直接克隆或删除,鼠标右键可得到:

函数调用

在搜索栏找到 Function 条目,创建对应函数节点:

function在同一名字下可以重载不同的形参,假如修改形参导致和别的函数冲突,会自动把函数名更改为不冲突的形式。

Function是可以多重调用的,以下是Function的示例,OnLateUpdate调用CameraRotation,然后CameraRotation调用ClampAngle:

函数ClampAngle的连接示例
函数ClampAngle的连接示例
CameraRotation调用ClampAngle的部分
CameraRotation调用ClampAngle的部分
OnLateUpdate调用CameraRotation实例
OnLateUpdate调用CameraRotation实例
StateMachineGraph 编辑
节点功能与分类