返回

NodeCanvas行为树节点

1.Leafs(叶柄)

叶柄没有子节点,位于树的末端。

Action(行为)

  • 行为节点将执行分配的动作任务。“行为”节点将返回“正在运行”,直到“行为任务”完成时为止,此时它将根据分配的“行为任务”返回成功或失败。NC附带了各种不同的“行动任务”以供使用。

  • Success:成功完成分配的行为任务后

  • Failure:分配的行为任务完成失败后

  • Running:分配的操作任务尚未完成时。 ####Condition(条件)

  • 条件节点将执行条件任务,并根据该条件任务返回成功或失败。 NC附带各种要使用的条件任务。

  • Success:如果分配的条件任务为真

  • Failure:如果分配的条件任务为假

2.Composites(复合行为)

Sequencer(序列)

Sequencer按从最高优先级到最低优先级(从左到右)的顺序执行其子节点。

  • 成功:当所有子节点都成功完成
  • 失败:当任何子节点返回失败时
  • 正在运行:当前正在执行的子节点正在运行时

Selector(选择器)

Selector按从高到低的优先级(从左到右)的顺序执行其子节点。

  • 成功:当任何子节点返回成功。
  • 失败:当所有子节点都返回失败时。
  • 正在运行:当前正在执行的子节点正在运行时。

Probability Selector(概率选择器)

概率选择器将根据被选择的机会选择并执行子节点。如果该选定子级返回成功,则概率选择器还将返回成功。如果返回失败,则将选择一个新的子代。如果没有孩子返回成功,则概率选择器将返回失败,或者如果引入了“失败机会”,则可能立即返回失败。

  • 成功:当选定的子节点返回成功时。
  • 失败:选定的子节点返回失败时,或者由于“失败机会”而未选择任何子节点。
  • 正在运行:当选定的子节点返回运行时。

Priority Selector(优先选择器)

优先级选择器与普通选择器相似,但是将根据每个子级具有的优先级来选择子级执行的顺序。连接子节点后,将显示优先权重,您可以直接或通过Blackboard变量进行更改。

  • 成功: 第一个子节点返回成功时。
  • 失败:当所有子节点都返回失败时。
  • 正在运行: 当前子节点正在运行。

Parallel(并行)

并行将同时执行其所有子级。可以将其设置为具有Sequencer或Selector的策略,如下所示:

如果设置为First Failure,则任何子代返回Failure后,并行将重置所有当前的Running子代,并返回Failure。否则,当所有孩子都返回成功后,它将返回成功。

如果设置为First Success,则任何子级返回Success时,并行将重置所有当前的Running子级,并也返回Success。否则,当所有孩子都返回失败后,它将返回失败。

  • 成功:如果设置为“首次成功”,则任何孩子返回成功。如果设置为“首次失败”,则当所有孩子都成功完成时。
  • 失败:如果设置为“首次失败”,则任何子级返回失败时。如果设置为“首次成功”,则所有子项均以失败告终。
  • 正在运行:任何孩子在跑步时。

Flip Selector(反转选择器)

翻转选择器的工作方式与普通选择器类似,但是一旦子节点返回成功,它就会移到末尾(右)。因此,以前将始终先检查失败的孩子,最近再检查成功的孩子。

  • 成功: 当子级返回成功时。
  • 失败: 当所有子级都返回失败时。
  • 正在运行:当前子级正在运行。

Switch(开关)

Switch节点可以切换Enum或Integer值。根据当前的Enum或整数值,它将执行相应的子节点。如果另一个子节点先前在运行,它将被中断。连接子节点后,连接将读取枚举或整数值。

  • 成功:当前子节点返回成功时。
  • 失败:当前子节点返回失败,或者枚举或整数值相对于连接的子节点数超出范围。
  • 正在运行:当前子节点返回正在运行。

Step Iterator(步骤迭代器)

步骤迭代器类似于选择器。如果子节点返回成功,则返回成功,如果所有子节点返回失败,则返回失败。唯一的区别是,它会记住哪个子级返回成功,并从下一个子级开始下一次执行,以便在下次再次执行步骤迭代器时按顺序进行。

  • 成功:子节点返回成功时。
  • 失败:当所有子节点都返回失败时。
  • 正在运行:当前子节点正在运行时。

3.Decorators(装饰节点)

Interruptor(中断节点)

Interuptor被分配了条件任务。如果条件为真或变为真,则子节点将在运行中被中断,并且中断器将返回失败。否则,中断器将返回子节点返回的任何内容。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败时,或者即使子节点正在运行时,分配的条件为true或变为true。(打断了)。
  • 正在运行:子节点返回运行时。

Conditional(条件节点)

仅当指定的条件为true时,条件语句才会执行其子节点,然后它将返回子节点返回的任何内容。如果条件为假,但子节点尚未运行,它将返回失败。因此,换句话说,如果条件即使成功了一帧,则子节点将执行并且即使条件不再成立也不会被中断。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败,或者条件为false且子节点尚未运行时。
  • 运行:子节点返回运行时。

Inverter(逆变器)

逆变器会将其子节点的成功和失败返回状态重新映射为相反的状态。 成功:将子节点重新映射到成功时。

  • 成功:子节点返回失败时。
  • 失败:子节点返回成功时。
  • 正在运行:子节点正在运行时。

Repeater(中继器)

Repeater会重复其子级Number次,或者直到它返回指定的状态,或者Forever。

  • 成功:如果为“Repeat Times(重复次数)”,则子节点在最后一次重复时返回成功。如果为“Repeat Until(重复直到)”,则子节点返回成功且所需状态为成功时。
  • 失败:如果为“Repeat Times(重复次数)”,则子节点在最后一次重复时返回失败。如果为“Repeat Until(重复直到)”,则子节点返回失败且所需状态为失败时。
  • 运行:只要重复。

Filter(过滤器)

按特定的Numbers次数或每特定的时间量(例如Cooldown)过滤对其子节点的访问。默认情况下,如果将其过滤,则关于其父节点,该节点将被视为“不活动”。取消选择此选项将返回失败。

  • 成功:访问子节点并返回成功时。
  • 失败:访问子节点并返回失败时,或“受限时不活动”被关闭。
  • 正在运行:访问子节点并返回运行。

Iterator(迭代器)

迭代器将迭代从黑板获取的列表。在每次迭代中,将使用提供的名称将当前迭代的元素保存在同一黑板上,并将执行子节点。

可以选择将Iterator设置为在装饰的节点返回成功或失败后立即终止迭代。如果未设置任何终止条件(NONE),或者如果列表已被迭代且不满足终止条件,则Iterator将返回上一次返回的迭代子执行的结果。

如果选中了“重置索引”,则迭代器将在重置时将当前迭代的索引重置为零,否则该索引将保留,除非它是列表的最后一个索引。将其视为“for each”。

  • 成功:当列表被迭代并且子节点返回成功时,或者如果设置为“First Success(首次成功)”,则子节点首次返回成功。
  • 失败:迭代列表并且子节点返回失败,或者如果设置为“‘First Failure(首次失败)”,则子节点首次返回失败。
  • 运行:只要迭代就可以了。

Timeout(暂停节点)

如果子节点的运行时间超过以秒为单位指定的时间,则超时装饰器将中断子节点“运行”。否则,它将返回子节点返回的任何内容。

  • 成功:当子级返回成功时。
  • 失败:当子级返回失败或超时时。
  • 正在运行:子级返回跑步时。

Wait Until(等待,直到)

Wait Until将返回运行,直到分配的条件任务变为真。如果在子级被勾选后条件变为假,它将不会中断它。仅当孩子尚未运行时才检查该条件。

成功:当子级返回成功时。 失败:当子级返回失败时。 正在运行:当子级返回正在运行或条件为假时。

Optional(可选结果)

Optional Decorator在执行装饰的子节点时不考虑其成功或失败返回状态,因此就预期状态而言,它对于父节点是可选的。

  • 成功:永远不会。
  • 失败:从不。
  • 正在运行:子节点正在运行时。

Guard(守护)

如果具有相同指定令牌的另一个Guard已经在保护(运行)该令牌,则防止装饰的子级运行。对于为同一代理运行的所有行为树,保护是全局的。

受保护时,可以将其设置为返回失败或正在运行。

  • 成功:当子级返回成功时。
  • 失败:当子级返回失败或保护处于活动状态并设置为受保护时返回失败。
  • 正在运行:当子级返回运行或受保护时处于活动状态,并设置为在受保护时返回运行。

Override Agent(替代代理)

Override Agent将为行为树的其余部分以及直接从Blackboard变量中选择或获取的游戏对象设置另一个Agent。这意味着该装饰器下面的每个节点现在都会被该新代理选中。此装饰器是NodeCanvas允许您从单个“主”行为树控制多个代理或动态更改代理的方式之一。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败时。
  • 运行:子节点返回运行时。

4.Sub-Behaviours(子行为)

SubTree(行为树)

子树是整个其他行为树。SubTree节点将返回分配的行为树的根节点(“开始”)返回的任何内容。根行为树的代理和黑板将向下传递到子树,因此所有可用的黑板变量将相同,并且也可用于子树。

成功:当SubTree的根节点返回成功时。 失败:当SubTree的根节点返回失败时。 正在运行:当SubTree的根节点返回“正在运行”时。

NestedFSM(状态机)

可以为嵌套的FSM分配整个FSM。执行后,FSM将启动。只要FSM正在运行,NestedFSM节点将返回“正在运行”。您可以为成功指定FSM的一种状态,为失败指定另一种状态。一旦嵌套的FSM进入任何一种状态,FSM将停止,并且该节点将相应地返回成功或失败。否则,当嵌套的FSM完成时,它将返回成功。此行为树的代理和黑板将传递给嵌套FSM,因此根行为树的所有可用变量也将相同,并且可用于嵌套FSM。

成功:当嵌套FSM进入选定的成功状态时,或嵌套FSM完成时。 失败:嵌套的FSM进入选定的失败状态时。 运行:只要嵌套FSM正在运行。