‫你好, 欢迎｡
‫在这节课中, 我们将让触发器组件打印, 当它有一个空的空间时, 它会被锁定,
‫当我们把滴水嘴放进去时, 它会被解锁｡
‫而且如果我再把它拿出来, 它又会被锁上｡
‫我们要做的就是把我们的功能, 找出我们是否有一个可接受的参与者,
‫放到它自己的独立功能中｡
‫我们将学习四个循环内的早期收益｡
‫要做到这一点, 让我们深入了解一下｡
‫所以我们在tech组件中得到的这段代码对我来说已经开始感觉像一个函数了｡
‫从本质上讲, 它是一个获取可接受参与者的函数, 如果我们有一个参与者, 那么我们就可以继续我们的触发器组件｡
‫并在private部分下, 创建这样一个函数｡
‫现在, 它的返回类型应该是什么？
‫我认为它应该是一个A actor指针, 如果没有可接受的actor, 它总是可以是一个空指针｡
‫所以我们可以把这个叫做get acceptable actor空括号｡
‫我们不需要给予它任何东西｡
‫因为它不改变函数, 所以我们可以使它恒定｡
‫让我们继续在CPP文件中实现它｡
‫我们要缩进它, 给予它一个你触发的组件冒号, 冒号并用大括号替换它的分号.
‫我们需要的代码基本上就是tic组件的内容, 除了我们不想做的只是记录我们已经在这里解锁了actor｡
‫我们要做的是在我们找到这个参与者的情况下, 我们要返回它｡
‫所以我们有几种方法可以做到这一点｡
‫我们可以说在函数的开头有一个参与者指针, 它将是返回参与者,
‫默认情况下我们将它设置为空指针.
‫所以我们没有演员要退｡
‫但是当我们通过for循环最终找到一个具有可接受标签的参与者时,
‫我们可以说, 嘿, 返回的参与者应该指向我们在数组中找到的参与者指针｡
‫然后在for循环结束的时候, 在for循环结束之后, 我们已经看过了所有的参与者｡
‫我们可以继续并返回return actor变量, 因为这是正确的类型｡
‫没关系, 我会的
‫但它要求我们创建一个变量, 还要求我们遍历整个for循环,
‫即使我们已经找到了一个可接受的参与者｡
‫因此, 更好的方法是使用早期返回｡
‫我们以前在抓CP时也见过这种情况｡
‫如果物理句柄等于一个空指针, 那么我们返回并且tick组件的其余部分不需要运行｡
‫我们也可以在for循环中使用同样的效率｡
‫所以我要做的是, 如果我们找到了可以接受的演员, 我们只是要做一个返回演员｡
‫我们实际上是返回在for循环中找到的指针, 而for循环的其余部分不必运行.
‫然而, 如果我们一直到for循环的末尾, 我们没有找到任何东西, 我们没有返回任何东西,
‫return会停止for循环, 离开函数｡
‫但是如果我们到达最后, 我们需要默认返回一些东西｡
‫这是我们可以返回空指针的地方｡
‫因此这是默认值｡
‫这意味着我们已经遍历了整个for循环｡
‫我们已经看到, 没有一个可以接受的演员｡
‫我们重叠的演员都不是｡
‫带着正确的标签｡
‫所以我们返回空指针｡
‫这就意味着我有了一个多余的返回因子变量, 我可以把它去掉.
‫这读起来真的很干净｡
‫我们正在经历, 我们正在获得重叠的演员, 我们正在对他们做一个完整的循环｡
‫如果我们测试每个参与者, 它是否有标签, 可接受的标签？
‫如果是这样, 我们就到此为止｡
‫我们把那个还回去｡
‫如果它们都没有它, 我们返回一个空指针｡
‫所以我们来挑战一下, 如果我们找到了演员, 你会怎么做｡
‫因此, 在tick组件中调用我们的函数｡
‫检查指针是否为空, 并记录两种情况, 无论我们是否有一个演员, 如果我们没有使用一个if和一个else语句｡
‫暂停视频, 开始体验｡
‫凯耶｡
‫欢迎回来｡
‫让我们来看看我们的技术组件｡
‫我们要做的是创建一个变量, 一个参与者指针, 它将成为参与者,
‫这等于得到了一个可接受的参与者.
‫然后我们将执行if actor not equal to
‫null pointer, 然后在这个的主体中, 我们将执行一个u log unlocking, 然后在else中,
‫另一个你这次记录的是re locking, 因为这是我希望我们的触发器组件的行为,
‫并且将它一起移动, 以使它具有如果你有一个石像鬼在那里, 它将解锁, 它将使用移动器, 如果我们基本上取消选中移动复选框,
‫如果我们删除石像鬼, 它将重新锁定｡
‫我们来编译一下｡
‫现在我们按播放键｡
‫你可以看到它被锁上了因为我们没有一个滴水嘴在那里｡
‫把石像鬼捡起来带过来｡
‫就这样｡
‫现在开锁了, 把它拿出来, 它又锁上了, 开锁了, 又锁上了｡
‫好极了｡
‫如果我进去, 什么都不会发生｡
‫只是重新锁定｡
‫所以我们已经成功地找出了触发器组件中是否有东西｡
‫现在我们只需要让它做点什么｡
‫这将是下节课的主题｡
‫我会看到你在那里｡