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

    上下文

    上下文是 Visual Effect Graph 处理(垂直)工作流程并确定粒子生成及模拟方式的主要元素。您在图形上组织上下文的方式定义了处理工作流的操作顺序。有关处理工作流程的信息,请参阅 Visual Effect Graph 逻辑。每个上下文定义一个计算阶段。例如,上下文可以:

    • 计算效果产生的粒子数。
    • 新建新的粒子。
    • 更新所有活粒子。

    上下文按顺序相互连接以定义粒子的生命周期。在图形创建新粒子后,Initialize 上下文可以连接到 Update Particle 上下文以模拟每个粒子。此外,Initialize 上下文可以改为直接连接到 Output Particle 上下文,在不模拟任何行为的情况下渲染粒子。

    创建和连接上下文

    上下文是一种 图形元素,因此要创建一个上下文,请参阅添加图形元素。

    上下文以垂直、线性的顺序相互连接。为了实现这一点,它们使用流程插槽。根据上下文定义的粒子生命周期的具体部分,上下文可能在其顶部、底部或两个位置都设有流程插槽。

    配置上下文

    要更改上下文的行为,请在节点 UI 或检查器中调整其设置。

    某些设置还会更改上下文的外观。例如在一个 Quad Output 上下文中,如果您将 UV 模式设置为 FlipbookMotionBlend,Unity 会将以下额外属性添加到上下文标头中:Flipbook Size、Motion Vector Map 和 Motion Vector Scale。

    流程兼容性

    并非所有上下文都可以相互连接。为了保持一致的工作流程,以下规则适用:

    • 上下文仅连接到兼容的输入/输出数据类型。 事件 可以连接到一个或多个事件或 **Initialize* 上下文。 Initialize* 上下文可以有一个或多个 **Initialize 源,或一个或多个 GPUSpawnEvent 源,但这些数据类型是互斥的。
    • 只有一个 Initialize 上下文可以连接到一个 Update 上下文。
    • 您可以将 Output 上下文连接到 Initialize 或 Update 上下文。

    有关上下文兼容性的细分,请参阅下表。

    上下文 输入数据类型 输出数据类型 具体备注
    Event None SpawnEvent (1+) None
    Spawn SpawnEvent (1+) SpawnEvent (1+) 有两个输入流程插槽,分别用于启动和停止 Spawn 上下文。
    GPU Event None SpawnEvent 到 Initialize 上下文的输出
    Output Event SpawnEvent (1+) 将 CPU SpawnEvent 输出回 Visual Effect 组件。
    Initialize SpawnEvent (1+) 或 GPUSpawnEvent (1+) Particle (1) 输入类型是 SpawnEvent 或 GPUSpawnEvent。这些输入类型是互斥的。
    可以输出到 Particle Update 或 Particle Output。
    Update Particle (1) Particle (1+) 可以输出到 Particle Update 或 Particle Output。
    Particle Output Particle (1) None 可以有来自 Initialize 或 Update 上下文的输入。
    没有输出。
    Static Mesh Output None None 独立上下文。

    上下文类型概述

    本节介绍每种上下文的所有常见设置。

    Event

    Event 上下文仅显示其名称,即一个字符串。要触发 Event 上下文并从中激活工作流,请在 组件 API 中使用该 Event 上下文的名称。有关如何执行此操作的信息,请参阅 发送事件。

    Spawn

    Spawn 上下文是具有三种状态的独立系统:Running、Idle 和 Waiting。

    Looping* (Running):此状态意味着 Unity 计算上下文中的代码块并生成新的粒子。 *Finished** (Idle):此状态意味着生成机器已关闭,并且不计算上下文中的代码块或生成粒子。

    • DelayingBeforeLoop/DelayingAfterLoop (Waiting):此状态在您可以指定的延迟时间期间暂停上下文。延迟之后,上下文恢复,计算上下文中的代码块,并生成粒子。

    要自定义 Spawn 上下文,您可以向其添加兼容的 Blocks。有关 Spawn 上下文 API 的信息,请参阅 脚本参考。

    启用和禁用

    Spawn 上下文公开了两个 流程插槽:Start 和 Stop:

    • Start 输入重置/启动 Spawn 上下文。如果不为此流程插槽连接任何对象,它会隐式地使用 OnPlay 事件。Start 使用多次与使用一次的效果相同。
    • Stop 输入停止 Spawn 系统。如果不为此流程插槽连接任何对象,它会隐式地使用 OnStop 事件。

    循环和延迟

    每个 Spawn 上下文都包含一个状态,用于确定该上下文何时生成粒子。

    • Spawn 上下文在特定持续时间的循环中发射粒子。这意味着当每个循环开始时,内部生成时间都会重置。默认情况下,持续时间为 infinite,但您可以更改此设置。
      设置循环模式:
      1. 在图形中选择 Spawn 上下文。
      2. 在检查器中,单击 Loop Duration 下拉菜单。
      3. 从列表中,单击 Infinite、Constant 或 Random 中的任何一个。
    • Spawn 上下文可以执行一次、多次或无限次循环。
      设置循环次数:
      1. 在图形中选择 Spawn 上下文。
      2. 在检查器中,单击 Loop 下拉菜单。
      3. 从列表中,单击 Infinite、Constant 或 Random 中的任何一个。
    • Spawn 上下文可以在每个循环之前和之后执行延迟。在延迟期间,生成时间正常流逝,但 Spawn 上下文不会生成任何粒子。
      要设置延迟持续时间:
      1. 在图形中选择 Spawn 上下文。
      2. 在检查器中,单击 Delay Before Loop 或 Delay After Loop 下拉菜单。
      3. 从列表中,单击 None、Constant 或 Random 中的任何一个。

    如果将 Loop Duration、Loop、Delay Before Loop 或 Delay After Loop 设置为 Constant 或 Random,Spawn 上下文会在其标头中显示额外的属性以控制每种行为。为了评估您设置的值,Unity 使用以下规则:

    • 如果设置,Unity 会在该上下文的 Start 流程输入触发时评估 Loop Count。
    • 如果设置,Unity 会在每次开始循环时评估 Loop Duration。
    • 如果设置,Unity 会在每次延迟开始时评估 Loop Before/After Delay。

    有关循环和延迟系统的可视化,请参见下图:

    循环/延迟系统图释

    GPU Event

    GPU Event 上下文是实验性上下文,它将输入连接到来自其他系统的输出 GPU 事件。它们在两个方面与普通的 Event 上下文不同:

    • GPU 计算 GPU 事件,CPU 计算普通事件。
    • 您无法使用代码块自定义 GPU Event 上下文。

    备注:当您将 Spawn 事件连接到 Initialize 上下文时,请注意 GPU Spawn 事件和普通 Spawn 事件是互斥的。同一时间,您只能将一种类型的 Spawn 事件连接到 Initialize 上下文。

    Initialize

    Initialize 上下文基于 SpawnEvent 数据生成新粒子,Unity 根据 Events、Spawn 上下文或 GPU Event 上下文计算这些数据。

    例如:如果 Spawn 上下文声明该效果应该创建 200 个新粒子,则 Initialize 上下文会为所有 200 个新粒子处理其代码块。

    要自定义 Initialize 上下文,您可以向其添加兼容的 Blocks。

    Initialize 上下文是新系统的入口点。因此,它们在标头中显示以下信息和配置详细信息:

    属性/设置 描述
    Bounds(属性) 设置系统的包围盒。
    Capacity(设置) 控制系统的分配计数。

    Update

    Update 上下文基于 Particle 数据更新系统中的所有活粒子,Unity 从 Initialize 和 Update 上下文计算这些数据。Unity 执行 Update 上下文,从而更新每个粒子、每一帧。

    Particle Update 上下文还会自动处理粒子的一些计算,以简化常见的编辑任务。

    要自定义 Update 上下文,您可以向其添加兼容的 Blocks。

    设置 描述
    Update Position 指定 Unity 是否对粒子应用速度积分。启用后,Unity 将简单的欧拉速度积分应用于每帧每个粒子的位置。禁用时,Unity 不会应用任何速度积分。
    Update Rotation 指定 Unity 是否对粒子应用角度积分。启用后,Unity 将简单的欧拉积分应用于每帧每个粒子的旋转。禁用时,Unity 不会应用任何角度积分。
    Age Particles 如果上下文使用 Age 属性,这将控制 Update 上下文是否使粒子随时间老化。
    Reap Particles 如果上下文使用 Age 和 Lifetime 属性,这将控制 Update 上下文是否在粒子的年龄大于其生命周期时移除粒子。

    Output

    Output 上下文渲染系统中的粒子。它们根据来自同一系统中 Initialize 和 Update 上下文的粒子数据,使用不同模式和设置渲染粒子。然后,它将配置渲染为特定的原始形状。

    要自定义 Output 上下文,您可以向其添加兼容的 Blocks。

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