Input and Output Ports
输入和输出端口
正如我们之前解释的那样,自定义的TreeNodes
可以用于执行任意简单或复杂的软件。它们的目标是提供一个具有更高抽象层级的接口。
因此,它们在概念上与函数没有不同。
类似于函数,我们经常想要:
- 将参数传递给一个节点(inputs)
- 从一个节点中获取某种信息(outputs)
- 一个节点的输出可以是另一个节点的输入。
BehaviorTree.CPP
为通过端口(ports)进行数据流的基本机制提供了简单易用、灵活且类型安全的功能。
在本教程中,我们将创建如下的树:
你可能已经注意到了,作为序列的第二个子项将写在一个键/值表(黑板)的行上,第四个节点将从同一行读取。
Inputs ports
-
一个有效的输入可以是以下两者之一:
- 一个可以被节点解析的静态字符串,或者
- 一个指向黑板条目的“指针”,由 key 标识。
"黑板"是树的所有节点共享的简单__键/值存储__.
黑板的"条目"是一个键值对。
输入端口可以读取黑板上的条目,而输出端口可以写入一个条目。
假设我们想要创建一个名为SaySomething
的ActionNode
,它应该在std::cout
上打印一个给定的字符串。
这样的字符串将通过名为“message”的输入端口传递。
考虑这些替代的 XML 语法:
<SaySomething message="hello world" /><SaySomething message="{greetings}" />
在 first node 中的属性message
的意思是:
"The static string 'hello world' is passed to the port 'message' of 'SaySomething'".
消息