docs.unity3d.com
    显示 / 隐藏目录

    事件

    事件定义 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 上下文:

    1. 在 Visual Effect Graph 窗口 中,在空白处右击。
    2. 从菜单中单击 Create Node。
    3. 在 Node Creation 菜单中,单击 Contexts > Event (Context)。
    4. 在 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% 的父粒子速度。

    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)