﻿1
00:00:04,360 --> 00:00:05,860
‫大家好, 欢迎这堂课｡

2
00:00:05,860 --> 00:00:12,940
‫我们将学习如何执行一段代码, 执行次数可变,

3
00:00:12,940 --> 00:00:20,050
‫这样我们就可以打印出, 这个区域, 这个触发器组件中, 重叠的每个对象｡

4
00:00:20,050 --> 00:00:24,400
‫所以你可以看到当我们都在的时候, 我站在里面, 还有一个滴水嘴｡

5
00:00:24,430 --> 00:00:29,410
‫它同时打印出了石像鬼的名字和玩家蓝图的名字｡

6
00:00:29,410 --> 00:00:31,360
‫让我们深入了解一下这是如何实现的｡

7
00:00:31,930 --> 00:00:39,220
‫现在, 我们这里的代码的问题是, 我们的参与者数组中可能有多个参与者｡

8
00:00:39,220 --> 00:00:44,380
‫如果我们想显示所有的参与者重叠, 或者我们想对所有的参与者做一些事情,

9
00:00:44,380 --> 00:00:47,680
‫我们需要能够运行代码｡

10
00:00:47,680 --> 00:00:53,740
‫如果我们有两个, 三个, 四个, 五个, 这样的情况,

11
00:00:53,740 --> 00:01:00,220
‫写一个if语句是非常低效的｡ 而且它肯定不会抓住每一个案例, 因为我们在文件中得到的行数有限｡

12
00:01:00,580 --> 00:01:08,230
‫我们处理这个问题的方法是, 当我们想重复一段代码多次, 但是我们不知道什么时候编译代码的时候,

13
00:01:08,230 --> 00:01:14,530
‫我们需要替换if语句｡

14
00:01:14,770 --> 00:01:20,170
‫If语句本质上是说, 我应该执行这个代码还是不应该执行这个代码, 或者我应该执行它很多次, 两次,

15
00:01:20,170 --> 00:01:25,300
‫三次, 四次, 等等？

16
00:01:25,450 --> 00:01:29,440
‫我们的做法是用一种叫做“疯狂声明”的东西｡

17
00:01:29,440 --> 00:01:32,440
‫现在它的构造非常像if语句｡

18
00:01:32,440 --> 00:01:42,430
‫然后你把一些布尔值放在括号里, 然后我们有一些花括号｡

19
00:01:42,430 --> 00:01:48,340
‫在花括号里面,

20
00:01:48,340 --> 00:01:54,340
‫这段代码会被不断地执行, 直到while语句中的条件变为false｡

21
00:01:54,340 --> 00:01:55,990
‫这就是为什么它被称为while｡

22
00:01:55,990 --> 00:01:59,320
‫所以当这个为真时, 执行这个代码｡

23
00:01:59,320 --> 00:02:04,630
‫所以它有点像if语句, 有时候它可能根本不执行代码,

24
00:02:04,630 --> 00:02:09,940
‫但不像if语句只能执行一段代码一次, while语句基本上可以一直执行下去,

25
00:02:09,940 --> 00:02:14,890
‫只要这个布尔值永远不为假.

26
00:02:15,460 --> 00:02:22,420
‫那么, 当我们可以创建一个int 32, 并将其命名为index, 并从零开始时, 为什么这是有用的呢？

27
00:02:22,900 --> 00:02:31,750
‫然后每次我们遍历这个wild循环的主体时, 我们都会增加存储在索引中的值｡

28
00:02:31,750 --> 00:02:36,130
‫所以我们可以说指数等于指数加一｡

29
00:02:36,640 --> 00:02:42,520
‫在C++中, 有一种简化的方法来做这个, 而不是像这样,

30
00:02:42,520 --> 00:02:49,480
‫索引加一, 你做的是, 加, 加索引, 这样就把存储在索引变量中的东西加了一｡

31
00:02:50,110 --> 00:02:50,360
‫好吧, 我会的

32
00:02:50,470 --> 00:02:52,090
‫所以我们从零开始｡

33
00:02:52,120 --> 00:02:54,940
‫我们每绕一圈, 就增加一次指数｡

34
00:02:54,940 --> 00:03:05,200
‫我们能做的就是, 只绕while循环, 当索引在数组的边界内时.

35
00:03:05,200 --> 00:03:11,440
‫所以我们可以说, 这个索引必须小于actors的点num｡

36
00:03:11,440 --> 00:03:13,210
‫这就是数组的大小｡

37
00:03:13,210 --> 00:03:19,570
‫记住当数组中有5个元素时, 数组中最后一个元素的索引是4.

38
00:03:19,870 --> 00:03:28,450
‫所以我们可以看到, 当指数有效时, 当指数4小于5时, 这是成立的｡

39
00:03:28,450 --> 00:03:37,390
‫但是一旦索引超过数组的末尾, 当它到达索引5的时候, 那么演员号就不再是了｡

40
00:03:37,390 --> 00:03:39,220
‫它的五个已经不再少于五个了｡

41
00:03:39,220 --> 00:03:45,220
‫因此while循环将停止执行并继续执行函数的其余部分｡

42
00:03:45,700 --> 00:03:53,110
‫这意味着我们现在可以把上面的代码重写一遍｡

43
00:03:53,290 --> 00:03:58,270
‫让我们拿着它, 复制它, 把它剪下来, 然后把它插在我们的狂野循环里｡

44
00:03:58,270 --> 00:04:03,520
‫但在我们增加索引之前, 最重要的是,

45
00:04:03,520 --> 00:04:08,560
‫因为我们要做的是把这个零替换成演员索引｡

46
00:04:08,800 --> 00:04:10,210
‫让我们继续｡

47
00:04:10,240 --> 00:04:11,950
‫这是怎么回事？

48
00:04:12,580 --> 00:04:15,910
‫让我们去掉if语句, 因为这会让事情变得有点混乱｡

49
00:04:15,910 --> 00:04:20,230
‫所以我们一开始变量index的值是零｡

50
00:04:20,530 --> 00:04:23,470
‫现在假设我们有两个演员来简化事情｡

51
00:04:23,680 --> 00:04:27,070
‫零比二小吗？

52
00:04:27,100 --> 00:04:27,760
‫是的, 我知道

53
00:04:27,760 --> 00:04:28,570
‫是的, 是的｡

54
00:04:28,570 --> 00:04:38,680
‫所以我们进入并得到演员0, 我们得到它的名字, 我们把它注销, 然后我们把索引中的值加一｡

55
00:04:38,680 --> 00:04:40,840
‫所以它从零变成了一｡

56
00:04:41,320 --> 00:04:47,320
‫现在我们回过头来评估while循环条件, 我们说1比2小吗？

57
00:04:47,320 --> 00:04:48,190
‫是的, 它是｡

58
00:04:48,190 --> 00:04:55,540
‫然后我们就可以找到演员1, 然后我们会得到它的名字, 并打印它的名字｡

59
00:04:55,540 --> 00:05:02,380
‫然后我们再次增加索引到索引2, 然后在wild循环中再次问这个问题, 说is two less

60
00:05:02,380 --> 00:05:03,760
‫than.

61
00:05:04,240 --> 00:05:05,890
‫答案是否定的｡

62
00:05:05,890 --> 00:05:12,070
‫所以我们跳过while循环的主体, 继续执行其余的代码｡

63
00:05:12,430 --> 00:05:15,120
‫所以这基本上就是我们想要达到的目标｡

64
00:05:15,130 --> 00:05:23,590
‫我们要打印出数组中每个参与者的名字, 这段代码就是这么做的.

65
00:05:23,620 --> 00:05:26,370
‫让我们继续编译它并检查我是对的｡

66
00:05:26,380 --> 00:05:33,610
‫如果我们继续单击“播放”并进入该框, 您可以看到我们只重叠了BP播放器｡

67
00:05:33,730 --> 00:05:36,270
‫我们去找石像鬼怎么样？

68
00:05:36,280 --> 00:05:41,070
‫如果我们只把它粘到反弹中, 你可以看到我们得到了重叠的滴水嘴｡

69
00:05:41,080 --> 00:05:43,250
‫但如果我也插手呢？

70
00:05:43,270 --> 00:05:50,080
‫现在你可以看到它正在打印我们在同一帧中重叠的球员和石像鬼｡

71
00:05:50,080 --> 00:05:58,520
‫所以我们的while循环是有效的, 当数组中有多个参与者时, 它会多次执行一段代码｡

72
00:05:58,540 --> 00:06:04,570
‫因为这种模式很常见, 所以我们有某种索引, 每次循环的时候, 我们都会增加它,

73
00:06:04,570 --> 00:06:09,340
‫在C++中, 这是一种简写.

74
00:06:09,340 --> 00:06:18,310
‫如果在Visual Studio代码中输入four, 那么这里有一个四循环的代码片段, 您可以展开它,

75
00:06:18,310 --> 00:06:23,890
‫您可以看到这是一个通用结构｡

76
00:06:23,890 --> 00:06:25,420
‫这里有个T码的东西｡

77
00:06:25,420 --> 00:06:29,470
‫我们可以将其替换为INT 32｡

78
00:06:29,620 --> 00:06:36,390
‫基本上这就是说在for循环的括号里有三个语句.

79
00:06:36,400 --> 00:06:43,240
‫第一个等价于我们在while循环之前设置index变量｡

80
00:06:43,780 --> 00:06:49,120
‫第二个是条件, 它等价于我们在wild循环中的条件｡

81
00:06:49,510 --> 00:06:54,670
‫你可以看到我们可以用actors. num来代替count｡

82
00:06:54,670 --> 00:07:01,240
‫最后一位基本上是加号, 不管你把它放在前面还是后面, 指数并不太重要,

83
00:07:01,240 --> 00:07:07,240
‫但是你可以看到这是在增加指数的值｡

84
00:07:07,240 --> 00:07:11,080
‫所以它相当于我们放在wild循环末尾的那一行｡

85
00:07:11,470 --> 00:07:18,910
‫所以这只是把所有的东西都集中在一行中, 我们必须使用我们的野生循环在多个地方展开｡

86
00:07:18,910 --> 00:07:20,380
‫所以这里有一个简单的挑战｡

87
00:07:20,380 --> 00:07:23,470
‫将您的wild循环转换为for循环｡

88
00:07:23,470 --> 00:07:30,220
‫你要复制代码的主体, 把索引从名字改为I.

89
00:07:30,250 --> 00:07:38,020
‫我们通常在循环中使用I的缩写, 这是index really的缩写, 然后编译和测试暂停视频｡

90
00:07:38,020 --> 00:07:38,800
‫现在开始吧｡

91
00:07:41,860 --> 00:07:42,180
‫好吧, 我会的

92
00:07:42,190 --> 00:07:42,760
‫欢迎回来｡

93
00:07:42,760 --> 00:07:44,710
‫所以这应该是相当简单的｡

94
00:07:44,710 --> 00:07:47,050
‫我们不想让索引加在这里｡

95
00:07:47,050 --> 00:07:54,370
‫所以我们要把剩下的部分去掉, 换个频道, 我们用index变量来索引actors数组｡

96
00:07:54,370 --> 00:07:58,450
‫我们要把它改成IE, 变量只在for循环中可用.

97
00:07:58,450 --> 00:08:04,750
‫完整循环语法的另一个优点是IE变量只在for循环中可用, 而当我们在Y循环中声明它时,

98
00:08:04,990 --> 00:08:10,210
‫它在外部可用,

99
00:08:10,210 --> 00:08:16,990
‫这会污染我们稍后使用的索引, 这样我们就可以删除这个wild循环｡

100
00:08:16,990 --> 00:08:25,390
‫你可以看到for循环更加精简了, 你会习惯它的语法有点奇怪｡

101
00:08:25,390 --> 00:08:30,670
‫让我们继续进行编译, 检查它是否确实完成了同样的工作｡

102
00:08:30,670 --> 00:08:38,050
‫如果我去拿我的滴水嘴, 走到重叠的演员面前, 你可以看到, 当我们都重叠在凹室里的时候,

103
00:08:38,050 --> 00:08:42,100
‫它确实打印了我们的两个演员｡

104
00:08:42,130 --> 00:08:42,850
‫好东西｡

105
00:08:42,850 --> 00:08:53,230
‫所以在这节课上我们看到了一个新的编程思想, 循环的思想, 我们特别遇到了while循环和for循环｡

106
00:08:53,230 --> 00:08:54,910
‫我们下节课再见｡

