# 创建复合节点

在大多数情况下，您不需要扩展复合节点。"大多数情况"是指您可以创建非常复杂的行为树来执行非常复杂的任务，除非您真的需要，否则您真的不应该扩展或创建复合节点。&#x20;

实际上，复合节点会影响行为树的流程，包括执行哪个节点、检查哪些装饰器以及激活哪个服务。默认情况下，只有三个：选择器、序列和简单并行。这些将足以覆盖我们的大部分情况。&#x20;

然而，如果您确实有特定的需求，那么虚幻引擎非常灵活，它允许您扩展复合节点。

首先，在蓝图里这是不可能实现的，所以你只能通过C++来扩展现有的（或创建一个新的）复合节点。

让我们来看一个例子，为什么你想创建一个新的复合节点。

为什么：因为你可以在行为树中实现一个流程，这个流程用当前的复合节点可能很难（或不可能）实现。

一个例子：你可以用简单并行节点来模拟一个行为树，而另一个不使用它们。但这会非常复杂且不太干净。因此，使用简单并行节点可以大大简化工作流程（最初，在引擎的第一个版本中，并没有简单并行节点）。

一个具体的例子：你想在这个自定义复合节点下面随机选择要执行的任务，基于一些权重。例如，权重可以通过一种特殊类型的装饰器来评估。因此，扩展一个复合节点可能需要在其他类型的节点上做额外的工作。

另一个具体的例子：你可以创建一个复合节点，不断随机选择一个子节点，直到达到阈值或其中一个子节点报告失败。

尽管这是一个非常有趣的话题，但不幸的是，它超出了本书的范围。因此，我们将限制自己创建新的任务、装饰器和服务。
