‫你好, 欢迎｡
‫在这节课中, 我们会让游戏在你用完所有的投射物时, 自动重新开始当前的关卡.
‫暂停5秒后, 让我们深入了解一下这是如何完成的｡
‫所以这个游戏的一个不太有趣的地方是当你没有弹药的时候, 它是一个死胡同｡
‫你不能再试一次｡
‫你不能做任何事｡
‫你不能进入另一个层次｡
‫现在, 你可以通过允许我们重新加载当前级别来解决这个问题｡
‫您可以使用蓝图中的特殊节点来完成此操作｡
‫因此, 如果您在事件图中单击鼠标右键, 您将打开关卡蓝图, 然后在事件图中单击鼠标右键｡
‫我们可以搜索开级｡
‫这里有两个选择｡
‫有一个按名称打开的级别和一个按对象引用打开的级别｡
‫我们可以使用开放级别的名称｡
‫这里有一个节点, 它显然有副作用, 因为它要重新加载关卡, 而且它有一个输入,
‫这里是关卡名称.
‫现在, 我们如何获得当前的关卡名称？
‫我们可以直接输入, 但是如果我们在将来的某个时候不小心重命名了这个级别呢？
‫我们还可以右键单击并执行get current level name, 这将获得另一个返回当前级别名称的节点｡
‫有趣的是, 这不是一个纯函数｡
‫我不知道为什么｡
‫因为它看起来应该是｡
‫我们可以做的是, 即使这两个类型不同, 其中一个返回字符串,
‫另一个需要类型名.
‫实际上, 在字符串和名称之间进行转换是非常容易的, 这样我们就可以从返回值拖动到输入值,
‫并且会自动为我们创建一个转换节点｡
‫我们还需要连接这两者之间的执行引脚, 因此我们将转换当前级别名称,
‫然后打开该级别｡
‫我们什么时候要这么做？
‫目前一切都发生在一个关键事件或开始发挥, 但有另一种选择｡
‫我们可以在根事件图中有一个特殊的节点, 不是在函数中, 而是在根事件图中, 称为延迟节点.
‫所以我们要做的是在按下“弹药耗尽”按钮后, 我们要拔下这里的执行销, 并搜索延迟｡
‫然后你可以看到它引入了一种特殊的节点, 上面有一个时钟｡
‫这意味着输出不是在函数完成后立即发生, 而是在一定时间后发生｡
‫因此, 您可以看到, 我们可以在此处输入持续时间, 例如, 该持续时间可以是5秒｡
‫所以在我的打印字符串中, 我会更新它, 让它在5秒内重新启动, 然后点, 点, 点｡
‫然后我们可以将重新启动电平的代码插入到输出中, 即延迟节点的已完成节点｡
‫所以如果我们现在继续玩, 我们会看到我的弹药用完了, 我用完了所有的弹药,
‫它说我在5秒后重新启动, 5秒过去后, 砰, 关卡重新启动了.
‫所以这节课的一个小挑战就是从我们刚创建的节点中提取一个函数, 获取当前级别, 名称和开放级别｡
‫我对你们的挑战是为这个函数想一个好名字｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫我将称之为重启级, 因为我认为它就是这样做得.
‫我将右键单击collapse to function并调用它restart level, 它与当前输入没有关系｡
‫它不需要是纯的, 因为它有重新启动水平的副作用｡
‫所以我们不希望它是纯的｡
‫原来如此｡
‫我将稍微重新组织我的节点, 并删除我的测试节点和测试函数, 方法是在我的蓝图中右键单击它,
‫然后单击“删除”｡
‫我们有了一个精简的小蓝图图, 它准确地描述了我们的游戏在很高的水平上可以做什么｡
‫所以我对结果很满意｡
‫感觉我们已经有了一个很好的博弈循环, 我们下节课再见.