‫你好, 欢迎｡
‫在这节课中, 我们将学习如何在C++中, 从函数中得到输出｡
‫我们将用它来大大简化我们的代码, 并开始实现我们已经写好的一些伪代码｡
‫我们开始吧｡
‫因此, 在我们试图理解函数的返回值之前, 让我们先做一个简短的迂回, 了解一下它｡
‫这里的两个概念为我们的词汇表增加了两个概念｡
‫所以第一个是表达式表达式是一段代码, 它产生一个值.
‫这是一个语句, 它是一段代码, 是一个要执行的动作｡
‫这两个表达式实际上是有关系的, 表达式几乎总是一个语句, 要计算一段代码的值,
‫你需要它是一个要执行的操作｡
‫但反过来说, 情况未必如此｡
‫一个语句并不总是能给予你一个值｡
‫让我们来看看一些表达式的例子, 还有一些我们已经写好的代码中没有的东西｡
‫所以当我们在C++中输入my vector时, 这是一个表达式, 因为它的值是存储在my vector变量中的值｡
‫对于局部向量也是如此｡
‫实际上如果你有局部向量加z, 它本身就是一个表达式, 局部向量加100｡
‫它本身也是一个表达式, 因为局部向量z给出了Z成员内部的值｡
‫当你加上100, 就会得到一个新的值｡
‫这些都是表达式｡
‫然而, 当我们声明局部向量时, 我们说F向量, 局部向量等于我的向量,
‫并在行尾放一个分号｡
‫我们不能用它来求值｡
‫没有任何价值｡
‫它只是告诉C++这是一个你要执行的动作.
‫我要你创建一个新的局部向量｡
‫所以这不是一个表达式｡
‫但是, 表达式的内容是获取演员位置｡
‫这是一个我们调用的函数, 因为它的末尾有括号｡
‫我们在这里没有任何争论｡
‫这是一个空的参数列表, 但它正在调用一些内容｡
‫因为这个函数有一个返回值, 这里的代码实际上是一个表达式, 它接受函数返回的值｡
‫这与我们之前在Blueprint中看到的输出引脚基本相同｡
‫与Blueprint不同, 一个函数只能有一个输出值｡
‫只有一个返回值｡
‫这就是我们在这里可以使用的, 我们已经写了伪代码, 它说, 获取当前位置｡
‫这就是我们要做的｡
‫我们将使用get active location来获取位置｡
‫因此, 让我们在这里创建一个新的局部变量｡
‫我们会有一个新的局部变量, 叫做, F, 向量类型｡
‫它必须是一个F类型的向量, 因为这是从获取活动位置返回的类型｡
‫我们将调用当前位置, 并将其设置为结果或表达式, 获取演员位置,
‫然后用括号括起一组匹配的括号, 然后用分号结束这行｡
‫如果我们仔细分析一下这一行, 我们可以看到这里的这一位, 获取参与者位置, 括号是表达式,
‫它为我们获取值, 这是参与者的当前位置｡
‫然后我们对当前位置进行赋值, 它也在这里声明.
‫所以在这一行, 这一整行都不是一个表达式｡
‫没有任何价值, 这是一个声明｡
‫通常你可以分辨出一个语句, 因为在C++中它以分号结尾｡
‫好的,
‫这基本上可以让我们去掉之前用过的my向量和局部向量因为我们应该可以更新这里的局部变量, 这个我们从演员的位置得到的当前位置｡
‫我们接下来要做的是, 在这里, 我们有一个注释, 它说, 设置位置｡
‫在注释行之后, 我将使用表达式current location设置演员位置, 也就是使用变量值,
‫然后在行尾放一个分号, 表示这是一条语句.
‫我们希望它在一个位置执行这个动作集, 注意, 虽然我的注释是缩进的,
‫但我决定不缩进代码来匹配, 因为通常我们希望这样｡
‫代码在函数中处于一个缩进级别｡
‫现在我能做的就是删除之前的所有代码, 所有涉及局部向量的代码｡
‫我的向量使用局部向量设置位置｡
‫我可以删除所有这些内容, 这样我们现在得到的就是我们评论周围的内容｡
‫我还将进入头文件, 在这里做一点清理｡
‫我们不再需要向量, 我们不再需要新的属性｡
‫所以我也要把这些删除｡
‫现在很明显, 移动平台CP实际上并没有做太多的事情, 因为我们得到了当前的活动位置,
‫然后我们再次设置它, 这基本上没有任何影响｡
‫所以我希望你能尝试一下更新这个tick函数中移动平台的当前位置｡
‫因此, 请根据需要使用X或Y成员｡
‫一个X将使您向前移动, 一个Y将使您向右移动, 然后您可以添加到它, 并重新分配到成员中,
‫就像我们之前所做的那样, 以更新我们的移动平台位置｡
‫根据您希望平台移动的速度添加一个或两个变量,
‫然后将平台移动到其起始位置, 因为现在我们没有成员变量来告诉它起始位置, 我们实际上使用的是当前位置｡
‫因此, 无论您将平台放置在何处, 平台都将从何处开始｡
‫然后我希望你编译并测试你的代码, 看看它是否像你所期望的那样在移动｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫所以我们要把这行代码放在注释的下面, 在这个位置加上向量.
‫我们把它放在这里的原因是因为顺序｡
‫我们要获取当前位置, 更新它, 然后设置它｡
‫我们不希望那里发生任何不正常的事情｡
‫如果我们在创建变量之前更新它, 那么, 这个变量就不存在了｡
‫请记住, 它是一个局部变量｡
‫它只存在于我们在函数的这个特定调用中创建它之后｡
‫如果我们在再次设置演员位置后再做一次, 当我们到达函数的右大括号时,
‫修改就会被丢弃｡
‫所以我们要设置当前位置, 点x, 我会用等于当前位置, 点x加1,
‫然后在行尾放一个分号｡
‫我们将回到Unreal, 然后点击编译按钮｡
‫正如我提到的, 我们现在需要把这个移动平台移到它的起始位置｡
‫我将点击第三人称角色, 并通过右键点击位置, 点击“复制”来复制他的位置, 然后转到移动平台,
‫右键点击其位置, 点击“粘贴”｡
‫所以这就把平台放在了我们的播放器里面, 这实际上并不是我们想要的｡
‫我会像这样把它稍微移到玩家的右边, 这样我就可以看到它是否在正确的高度｡
‫我想我会把它做得更低一点, 这是使用当前位置而不是位置变量的好处之一,
‫就是我可以实际看到这个平台在世界上的位置｡
‫现在, 如果我点击播放, 你会看到平台在X方向上很好地移动,
‫我仍然可以跳到它上面, 跟着它一起移动｡
‫好东西｡
‫现在, 我们已经了解了函数的返回值是如何工作的｡
‫我们真正开始理解C++世界蓝图中的许多概念｡
‫我们下节课再见｡