‫你好, 欢迎｡
‫在这节课中, 我们将开始在行为树中添加更多的功能,
‫通过添加一个自定义任务, 这个清晰的黑板值, 我们将在C++中完全自定义｡
‫让我们一起来看看怎么做吧｡
‫好吧, 我会的
‫所以我想展开这个行为树的行为, 这样我们就可以进行研究了｡
‫一旦我们完成调查, 我们就回家｡
‫所以我会在这里添加一个小的移动任务, 这只是返回到开始位置｡
‫为了到达那里, 我们需要做的是知道我们是否已经访问了最后一个已知的游戏地点｡
‫如果我们现在还没有办法的话, 我将通过设置最后一个已知玩家的位置来完成这个任务
‫但首先, 让我们创建一个装饰器｡
‫所以添加一个装饰器到调查黑板中, 并将其重命名为, 已经调查过了,
‫这将检查是否设置了最后一个已知位置｡
‫这就意味着我们需要有一个节点, 可以让我们取消黑板键｡
‫现在这并不存在｡
‫你只是觉得有, 其实没有｡
‫因此, 这是我向您展示如何创建自定义任务的绝佳机会｡
‫现在, 你可以用Blueprint很容易地完成它, 或者我将向你展示一个稍微困难的方法,
‫但是这个方法会给你很大的力量, 它是通过C++完成的｡
‫我们将转到主内容浏览器, 选择“添加新类”, 然后转到“新C++类”,
‫我们将显示“所有类”复选框｡
‫然后我们搜索Beat Task, 这里有很多选项｡
‫你可以看到很多实际上是那些内置的任务, 如制造噪音或有一个移动到这里或等待｡
‫现在你可以去看看C++, 看看它们是如何实现的｡
‫这总是有用的, 但我们感兴趣的是我们应该继承什么？
‫我们应该使用什么作为我们自己的节点的基础？
‫现在有几个选择｡
‫您可以选择将任务节点作为基础, 也可以使用黑板基础｡
‫这两者有什么区别呢？
‫让我们快速浏览一下｡
‫所以移动到实际使用的黑板基地｡
‫这意味着它有一个黑板键下拉菜单, 允许我们选择一个黑板键来使用｡
‫这意味着我们不需要在任务中硬编码我们正在使用的黑板键, 这很棒,
‫因为它允许我们在不同的情况下重用这些任务｡
‫所以如果你需要一个黑板键, 那么黑板底座是一个很好的搭配, 否则你就用另一个｡
‫我们来添加一个新的C++类, 显示所有类, 我们再次查找节拍任务,
‫然后选择Blackboard Base｡
‫现在我将它重命名为Beat Task, Underscore Clear Blackboard Value,
‫我们将在这里创建该类.
‫一开始, 这会失败｡
‫因此, 让我们单击“是”, 看看这里的错误消息是什么｡
‫它说的是关于Link的东西, 代表Link, 未解决的外部符号, 等等｡
‫通常当你从链接器中得到这种错误时,
‫这意味着你在头文件中得到了一些C++中没有的东西, 或者在这种情况下, 这意味着没有一个模块包含在我们所依赖的模块中｡
‫根据它要寻找的符号类型, 我可以看到这里是AI游戏任务所有者界面｡
‫它似乎在寻找一些与游戏性任务有关的东西, 而这实际上是一个模块｡
‫如果我们转到Visual Studio代码并打开文件浏览器, 它将向上滚动到我的项目｡
‫然后在源程序下简单的射击｡
‫应该有一个简单的射手构建X或任何你的项目名称是, 建设｡
‫在这里, 如果我给予我们多一点空间,
‫你可以看到我们有这个公共依赖项, 模块名称, 我们要添加到这个列表的模块名称是游戏｡
‫如果我们继续添加它, 然后返回编译, 不管什么原因,
‫希望一切都能编译成功.
‫当您为靴子任务覆盖时, 不会自动添加此选项｡
‫完成后, 让我们来看看这里创建了什么｡
‫我们应该有一个新的类, 这是我们的测试任务, 强调明确的黑板价值, 它是相当空的时刻｡
‫现在我想做的是, 如果我们现在把它加到我们的行为树中, 它会有一个丑陋的名字｡
‫因此, 我们需要为该任务取一个易于理解的名称｡
‫我们要做的就是添加一个构造函数并设置一个属性.
‫因此, 让我们在这里创建一个公共构造函数｡
‫构造函数总是与类同名, 所以我们可以复制它｡
‫不需要在结尾处使用分号作为任何参数, 然后让我们在C++中创建实现｡
‫而实现只需要设置一个名为node name的变量｡
‫所以如果你设置了节点名, 然后你使用了一个字符串, 那么我们设置的字符串就是节点名｡
‫所以这将是一个干净黑板
‫值只是与空格和正确的大写应该是很好的和容易的｡
‫现在, 我在录制时忘记了一件事, 那就是用文本宏将其包围起来｡
‫现在你应该在你的代码中这样做, 但是你会在我的代码中看到｡
‫它会一直这样, 我们现在就可以编译它了.
‫真棒, 编译成功｡
‫因此, 我要求您添加这个新节点｡
‫因此, 将其添加到调查行为的末尾, 并检查它是否完成｡
‫基本上, 它应该自动完成, 而不做任何事情｡
‫但请检查名称是否正确｡
‫检查你是否能够添加它, 我们将在下节课中学习添加行为｡
‫暂停视频, 开始体验吧｡
‫好吧, 我会的
‫欢迎回来｡
‫那么让我们来看看我们的敌人A｡ 一､ 并在调查行为的末尾添加｡
‫我们要加上黑板清洁的价值｡
‫你可以看到它的名字很好听｡
‫您还可以看到, 如果转到详细信息窗格, 您可以选择黑板键｡
‫我们将选择最后一个已知玩家的位置｡
‫尽管它还没有做任何事情, 但您可以看到我们具有该功能, 因为我们继承了Blackboard
‫Base, 让我们检查一下它是否自动完成｡
‫它应该这样做, 然后它应该继续前进｡
‫接下来我们来看看重量任务, 这样我们就可以看到它是直接完成还是自动完成｡
‫所以我要玩, 我要去躲在一个角落里, 尽我所能, 然后我要去看看调查它通过,
‫实际上他看到了我｡
‫所以我们再去躲一次吧｡
‫如果可以的话, 我去躲在拐角处｡
‫我会去的, 然后我打算去｡
‫你去那里｡
‫它直接穿过了黑板上的值, 这意味着它成功了,
‫因为我们知道如果它是一个序列, 它失败了, 它一定会停下来, 而不是进入砝码｡
‫这是正确的｡
‫黑色世界的价值在于, 直接返回成功, 然后等待下一节课,
‫我们将看看如何添加功能.
‫我会看到你在那里｡