﻿1
00:00:04,020 --> 00:00:04,980
‫你好, 欢迎｡

2
00:00:04,980 --> 00:00:14,010
‫在这节课中, 我们会让游戏在你用完所有的投射物时, 自动重新开始当前的关卡.

3
00:00:14,010 --> 00:00:18,810
‫暂停5秒后, 让我们深入了解一下这是如何完成的｡

4
00:00:19,080 --> 00:00:25,650
‫所以这个游戏的一个不太有趣的地方是当你没有弹药的时候, 它是一个死胡同｡

5
00:00:25,650 --> 00:00:26,910
‫你不能再试一次｡

6
00:00:26,910 --> 00:00:27,930
‫你不能做任何事｡

7
00:00:27,930 --> 00:00:29,820
‫你不能进入另一个层次｡

8
00:00:30,150 --> 00:00:38,160
‫现在, 你可以通过允许我们重新加载当前级别来解决这个问题｡

9
00:00:38,880 --> 00:00:42,750
‫您可以使用蓝图中的特殊节点来完成此操作｡

10
00:00:42,750 --> 00:00:47,850
‫因此, 如果您在事件图中单击鼠标右键, 您将打开关卡蓝图, 然后在事件图中单击鼠标右键｡

11
00:00:48,180 --> 00:00:50,580
‫我们可以搜索开级｡

12
00:00:50,580 --> 00:00:51,720
‫这里有两个选择｡

13
00:00:51,720 --> 00:00:55,650
‫有一个按名称打开的级别和一个按对象引用打开的级别｡

14
00:00:55,800 --> 00:00:59,520
‫我们可以使用开放级别的名称｡

15
00:00:59,520 --> 00:01:06,510
‫这里有一个节点, 它显然有副作用, 因为它要重新加载关卡, 而且它有一个输入,

16
00:01:06,510 --> 00:01:09,150
‫这里是关卡名称.

17
00:01:09,600 --> 00:01:12,000
‫现在, 我们如何获得当前的关卡名称？

18
00:01:12,000 --> 00:01:19,050
‫我们可以直接输入, 但是如果我们在将来的某个时候不小心重命名了这个级别呢？

19
00:01:19,350 --> 00:01:30,930
‫我们还可以右键单击并执行get current level name, 这将获得另一个返回当前级别名称的节点｡

20
00:01:30,930 --> 00:01:33,990
‫有趣的是, 这不是一个纯函数｡

21
00:01:33,990 --> 00:01:35,070
‫我不知道为什么｡

22
00:01:35,130 --> 00:01:36,840
‫因为它看起来应该是｡

23
00:01:36,930 --> 00:01:42,150
‫我们可以做的是, 即使这两个类型不同, 其中一个返回字符串,

24
00:01:42,150 --> 00:01:44,400
‫另一个需要类型名.

25
00:01:44,400 --> 00:01:51,120
‫实际上, 在字符串和名称之间进行转换是非常容易的, 这样我们就可以从返回值拖动到输入值,

26
00:01:51,120 --> 00:01:56,430
‫并且会自动为我们创建一个转换节点｡

27
00:01:56,430 --> 00:02:01,350
‫我们还需要连接这两者之间的执行引脚, 因此我们将转换当前级别名称,

28
00:02:01,350 --> 00:02:04,380
‫然后打开该级别｡

29
00:02:04,800 --> 00:02:06,870
‫我们什么时候要这么做？

30
00:02:06,870 --> 00:02:12,900
‫目前一切都发生在一个关键事件或开始发挥, 但有另一种选择｡

31
00:02:12,900 --> 00:02:23,010
‫我们可以在根事件图中有一个特殊的节点, 不是在函数中, 而是在根事件图中, 称为延迟节点.

32
00:02:23,010 --> 00:02:31,560
‫所以我们要做的是在按下“弹药耗尽”按钮后, 我们要拔下这里的执行销, 并搜索延迟｡

33
00:02:32,220 --> 00:02:37,080
‫然后你可以看到它引入了一种特殊的节点, 上面有一个时钟｡

34
00:02:37,080 --> 00:02:47,040
‫这意味着输出不是在函数完成后立即发生, 而是在一定时间后发生｡

35
00:02:47,040 --> 00:02:53,490
‫因此, 您可以看到, 我们可以在此处输入持续时间, 例如, 该持续时间可以是5秒｡

36
00:02:53,490 --> 00:03:04,710
‫所以在我的打印字符串中, 我会更新它, 让它在5秒内重新启动, 然后点, 点, 点｡

37
00:03:05,100 --> 00:03:16,650
‫然后我们可以将重新启动电平的代码插入到输出中, 即延迟节点的已完成节点｡

38
00:03:16,740 --> 00:03:24,390
‫所以如果我们现在继续玩, 我们会看到我的弹药用完了, 我用完了所有的弹药,

39
00:03:24,390 --> 00:03:33,540
‫它说我在5秒后重新启动, 5秒过去后, 砰, 关卡重新启动了.

40
00:03:33,540 --> 00:03:43,830
‫所以这节课的一个小挑战就是从我们刚创建的节点中提取一个函数, 获取当前级别, 名称和开放级别｡

41
00:03:43,830 --> 00:03:48,810
‫我对你们的挑战是为这个函数想一个好名字｡

42
00:03:48,810 --> 00:03:50,430
‫暂停视频, 开始体验｡

43
00:03:53,740 --> 00:03:54,050
‫好吧, 我会的

44
00:03:54,060 --> 00:03:54,660
‫欢迎回来｡

45
00:03:54,660 --> 00:03:59,370
‫我将称之为重启级, 因为我认为它就是这样做得.

46
00:03:59,370 --> 00:04:08,460
‫我将右键单击collapse to function并调用它restart level, 它与当前输入没有关系｡

47
00:04:08,460 --> 00:04:12,690
‫它不需要是纯的, 因为它有重新启动水平的副作用｡

48
00:04:12,690 --> 00:04:14,970
‫所以我们不希望它是纯的｡

49
00:04:14,970 --> 00:04:15,690
‫原来如此｡

50
00:04:15,690 --> 00:04:22,170
‫我将稍微重新组织我的节点, 并删除我的测试节点和测试函数, 方法是在我的蓝图中右键单击它,

51
00:04:22,170 --> 00:04:25,170
‫然后单击“删除”｡

52
00:04:25,470 --> 00:04:36,420
‫我们有了一个精简的小蓝图图, 它准确地描述了我们的游戏在很高的水平上可以做什么｡

53
00:04:36,420 --> 00:04:37,830
‫所以我对结果很满意｡

54
00:04:37,830 --> 00:04:41,640
‫感觉我们已经有了一个很好的博弈循环, 我们下节课再见.

