‫大家好, 欢迎这堂课｡
‫我们将学习如何执行一段代码, 执行次数可变,
‫这样我们就可以打印出, 这个区域, 这个触发器组件中, 重叠的每个对象｡
‫所以你可以看到当我们都在的时候, 我站在里面, 还有一个滴水嘴｡
‫它同时打印出了石像鬼的名字和玩家蓝图的名字｡
‫让我们深入了解一下这是如何实现的｡
‫现在, 我们这里的代码的问题是, 我们的参与者数组中可能有多个参与者｡
‫如果我们想显示所有的参与者重叠, 或者我们想对所有的参与者做一些事情,
‫我们需要能够运行代码｡
‫如果我们有两个, 三个, 四个, 五个, 这样的情况,
‫写一个if语句是非常低效的｡ 而且它肯定不会抓住每一个案例, 因为我们在文件中得到的行数有限｡
‫我们处理这个问题的方法是, 当我们想重复一段代码多次, 但是我们不知道什么时候编译代码的时候,
‫我们需要替换if语句｡
‫If语句本质上是说, 我应该执行这个代码还是不应该执行这个代码, 或者我应该执行它很多次, 两次,
‫三次, 四次, 等等？
‫我们的做法是用一种叫做“疯狂声明”的东西｡
‫现在它的构造非常像if语句｡
‫然后你把一些布尔值放在括号里, 然后我们有一些花括号｡
‫在花括号里面,
‫这段代码会被不断地执行, 直到while语句中的条件变为false｡
‫这就是为什么它被称为while｡
‫所以当这个为真时, 执行这个代码｡
‫所以它有点像if语句, 有时候它可能根本不执行代码,
‫但不像if语句只能执行一段代码一次, while语句基本上可以一直执行下去,
‫只要这个布尔值永远不为假.
‫那么, 当我们可以创建一个int 32, 并将其命名为index, 并从零开始时, 为什么这是有用的呢？
‫然后每次我们遍历这个wild循环的主体时, 我们都会增加存储在索引中的值｡
‫所以我们可以说指数等于指数加一｡
‫在C++中, 有一种简化的方法来做这个, 而不是像这样,
‫索引加一, 你做的是, 加, 加索引, 这样就把存储在索引变量中的东西加了一｡
‫好吧, 我会的
‫所以我们从零开始｡
‫我们每绕一圈, 就增加一次指数｡
‫我们能做的就是, 只绕while循环, 当索引在数组的边界内时.
‫所以我们可以说, 这个索引必须小于actors的点num｡
‫这就是数组的大小｡
‫记住当数组中有5个元素时, 数组中最后一个元素的索引是4.
‫所以我们可以看到, 当指数有效时, 当指数4小于5时, 这是成立的｡
‫但是一旦索引超过数组的末尾, 当它到达索引5的时候, 那么演员号就不再是了｡
‫它的五个已经不再少于五个了｡
‫因此while循环将停止执行并继续执行函数的其余部分｡
‫这意味着我们现在可以把上面的代码重写一遍｡
‫让我们拿着它, 复制它, 把它剪下来, 然后把它插在我们的狂野循环里｡
‫但在我们增加索引之前, 最重要的是,
‫因为我们要做的是把这个零替换成演员索引｡
‫让我们继续｡
‫这是怎么回事？
‫让我们去掉if语句, 因为这会让事情变得有点混乱｡
‫所以我们一开始变量index的值是零｡
‫现在假设我们有两个演员来简化事情｡
‫零比二小吗？
‫是的, 我知道
‫是的, 是的｡
‫所以我们进入并得到演员0, 我们得到它的名字, 我们把它注销, 然后我们把索引中的值加一｡
‫所以它从零变成了一｡
‫现在我们回过头来评估while循环条件, 我们说1比2小吗？
‫是的, 它是｡
‫然后我们就可以找到演员1, 然后我们会得到它的名字, 并打印它的名字｡
‫然后我们再次增加索引到索引2, 然后在wild循环中再次问这个问题, 说is two less
‫than.
‫答案是否定的｡
‫所以我们跳过while循环的主体, 继续执行其余的代码｡
‫所以这基本上就是我们想要达到的目标｡
‫我们要打印出数组中每个参与者的名字, 这段代码就是这么做的.
‫让我们继续编译它并检查我是对的｡
‫如果我们继续单击“播放”并进入该框, 您可以看到我们只重叠了BP播放器｡
‫我们去找石像鬼怎么样？
‫如果我们只把它粘到反弹中, 你可以看到我们得到了重叠的滴水嘴｡
‫但如果我也插手呢？
‫现在你可以看到它正在打印我们在同一帧中重叠的球员和石像鬼｡
‫所以我们的while循环是有效的, 当数组中有多个参与者时, 它会多次执行一段代码｡
‫因为这种模式很常见, 所以我们有某种索引, 每次循环的时候, 我们都会增加它,
‫在C++中, 这是一种简写.
‫如果在Visual Studio代码中输入four, 那么这里有一个四循环的代码片段, 您可以展开它,
‫您可以看到这是一个通用结构｡
‫这里有个T码的东西｡
‫我们可以将其替换为INT 32｡
‫基本上这就是说在for循环的括号里有三个语句.
‫第一个等价于我们在while循环之前设置index变量｡
‫第二个是条件, 它等价于我们在wild循环中的条件｡
‫你可以看到我们可以用actors. num来代替count｡
‫最后一位基本上是加号, 不管你把它放在前面还是后面, 指数并不太重要,
‫但是你可以看到这是在增加指数的值｡
‫所以它相当于我们放在wild循环末尾的那一行｡
‫所以这只是把所有的东西都集中在一行中, 我们必须使用我们的野生循环在多个地方展开｡
‫所以这里有一个简单的挑战｡
‫将您的wild循环转换为for循环｡
‫你要复制代码的主体, 把索引从名字改为I.
‫我们通常在循环中使用I的缩写, 这是index really的缩写, 然后编译和测试暂停视频｡
‫现在开始吧｡
‫好吧, 我会的
‫欢迎回来｡
‫所以这应该是相当简单的｡
‫我们不想让索引加在这里｡
‫所以我们要把剩下的部分去掉, 换个频道, 我们用index变量来索引actors数组｡
‫我们要把它改成IE, 变量只在for循环中可用.
‫完整循环语法的另一个优点是IE变量只在for循环中可用, 而当我们在Y循环中声明它时,
‫它在外部可用,
‫这会污染我们稍后使用的索引, 这样我们就可以删除这个wild循环｡
‫你可以看到for循环更加精简了, 你会习惯它的语法有点奇怪｡
‫让我们继续进行编译, 检查它是否确实完成了同样的工作｡
‫如果我去拿我的滴水嘴, 走到重叠的演员面前, 你可以看到, 当我们都重叠在凹室里的时候,
‫它确实打印了我们的两个演员｡
‫好东西｡
‫所以在这节课上我们看到了一个新的编程思想, 循环的思想, 我们特别遇到了while循环和for循环｡
‫我们下节课再见｡