事件
事件定义 Visual Effect Graph 的 [处理工作流程](GraphLogicAndPhilosophy.md#processing-workflow-(vertical-logic) 的输入。Spawn 和 Initialize 上下文 使用事件作为它们的输入。通过事件,Visual Effect Graph 可以:
- 开始和停止生成粒子。
- 读取从 C# 脚本发送的 事件属性有效负载。
创建事件
通常,事件只是一个表示事件名称的字符串。要在 Visual Effect Graph 中接收事件,请创建一个 Event 上下文 并在 Event Name 属性中键入您希望接收的事件的名称。Event 上下文没有输入流程插槽,只能将其输出流程插槽连接到 Spawn 或 Initialize 上下文。
创建 Event 上下文:
- 在 Visual Effect Graph 窗口 中,在空白处右击。
- 从菜单中单击 Create Node。
- 在 Node Creation 菜单中,单击 Contexts > Event (Context)。
- 在 Event Name 输入字段中,输入您的事件的名称。
默认事件
Visual Effect Graph 提供两个默认事件:
- OnPlay:启用粒子生成。如果您没有将事件分配给 Spawn 上下文的 Start 输入流程插槽,Visual Effect Graph 将隐式地将此事件绑定到该输入流程插槽。
- OnStop:禁用粒子生成。如果您没有将事件分配给 Spawn 上下文的 Stop 输入流程插槽,Visual Effect Graph 将隐式地将此事件绑定到该输入流程插槽。
如果您将 Event 上下文连接到 Spawn 上下文的 Start 或 Stop 输入流程插槽,这将分别删除对 OnPlay 和 OnStop 事件的隐式绑定。
自定义事件
如果不想使用默认事件,可以使用 Event 上下文来创建自己的自定义事件。
要做到这一点,首先 创建 Event 上下文,然后在 Event Name 属性中键入自定义事件的名称。
事件属性有效负载
事件属性有效负载是您可以附加到事件的属性。要在 Visual Effect Graph 中设置这些属性,您可以使用 Spawn 上下文中的 Set [Attribute] 代码块,但也可以将它们附加到您从 C# 脚本发送的事件。有关如何执行第二种操作的信息,请参阅 组件 API。
事件属性有效负载是一些属性,它们隐式穿越图形,从事件开始,通过 Spawn 上下文并最终到达 Initialize 上下文。要在 Initialize 上下文中捕获有效负载,请使用 Get Source Attribute 运算符或 Inherit [Attribute] 代码块。
默认视觉效果事件
默认视觉效果事件定义事件的名称,当 视觉效果实例重置时,Visual Effect Graph 会隐式发送该事件。这会在效果首次启动或效果重新启动时发生。
您可以独立为每个 Visual Effect Graph 资源 定义默认的视觉效果事件。您也可以为 Visual Effect Graph 资源的每个实例重写此值。要为实例重写默认的视觉效果事件,请参阅视觉效果检查器中的初始事件名称。
GPU 事件
GPU 事件是 Visual Effect Graph 的一项实验性功能。它们允许您基于其他粒子生成粒子。要启用此选项,请在视觉效果首选项中启用 Experimental Operators/Blocks 复选框。
GPU 事件是依赖于从其他系统发送的数据的事件上下文,例如,当粒子死亡时。以下 Update 代码块可以发送 GPU 事件数据:
- Trigger Event On Die:当一个粒子死亡时,在另一个系统上生成 N 个粒子。
- Trigger Event Rate:基于系统中的粒子,每秒(或每行进距离)生成 N 个粒子。
- Trigger Event Always:每帧生成 N 个粒子。
这些代码块连接到一个 GPUEvent 上下文。此上下文不处理任何代码块,而是连接到子系统的 Initialize 上下文。
要从父粒子收集数据,子系统必须在其 Initialize 上下文中引用源属性。为此,子系统可以使用 Get Source Attribute 运算符,或 Inherit Attribute 代码块。有关视觉示例,请参见下图。
在此示例中,子系统继承了创建它的粒子的源位置。它还继承大约 50% 的父粒子速度。