﻿1
00:00:04,330 --> 00:00:05,110
‫你好, 欢迎｡

2
00:00:05,110 --> 00:00:11,350
‫在这节课中, 我们将让触发器组件打印, 当它有一个空的空间时, 它会被锁定,

3
00:00:11,380 --> 00:00:15,010
‫当我们把滴水嘴放进去时, 它会被解锁｡

4
00:00:15,010 --> 00:00:17,830
‫而且如果我再把它拿出来, 它又会被锁上｡

5
00:00:17,830 --> 00:00:23,170
‫我们要做的就是把我们的功能, 找出我们是否有一个可接受的参与者,

6
00:00:23,170 --> 00:00:26,320
‫放到它自己的独立功能中｡

7
00:00:26,320 --> 00:00:29,320
‫我们将学习四个循环内的早期收益｡

8
00:00:29,320 --> 00:00:31,120
‫要做到这一点, 让我们深入了解一下｡

9
00:00:31,920 --> 00:00:36,900
‫所以我们在tech组件中得到的这段代码对我来说已经开始感觉像一个函数了｡

10
00:00:36,900 --> 00:00:45,420
‫从本质上讲, 它是一个获取可接受参与者的函数, 如果我们有一个参与者, 那么我们就可以继续我们的触发器组件｡

11
00:00:46,230 --> 00:00:49,680
‫并在private部分下, 创建这样一个函数｡

12
00:00:49,680 --> 00:00:51,850
‫现在, 它的返回类型应该是什么？

13
00:00:51,870 --> 00:00:59,690
‫我认为它应该是一个A actor指针, 如果没有可接受的actor, 它总是可以是一个空指针｡

14
00:00:59,700 --> 00:01:05,190
‫所以我们可以把这个叫做get acceptable actor空括号｡

15
00:01:05,190 --> 00:01:06,510
‫我们不需要给予它任何东西｡

16
00:01:06,510 --> 00:01:12,420
‫因为它不改变函数, 所以我们可以使它恒定｡

17
00:01:12,450 --> 00:01:16,350
‫让我们继续在CPP文件中实现它｡

18
00:01:16,350 --> 00:01:27,030
‫我们要缩进它, 给予它一个你触发的组件冒号, 冒号并用大括号替换它的分号.

19
00:01:27,570 --> 00:01:39,640
‫我们需要的代码基本上就是tic组件的内容, 除了我们不想做的只是记录我们已经在这里解锁了actor｡

20
00:01:39,660 --> 00:01:47,280
‫我们要做的是在我们找到这个参与者的情况下, 我们要返回它｡

21
00:01:47,280 --> 00:01:48,870
‫所以我们有几种方法可以做到这一点｡

22
00:01:48,870 --> 00:01:56,370
‫我们可以说在函数的开头有一个参与者指针, 它将是返回参与者,

23
00:01:56,370 --> 00:02:00,840
‫默认情况下我们将它设置为空指针.

24
00:02:00,840 --> 00:02:04,380
‫所以我们没有演员要退｡

25
00:02:04,380 --> 00:02:09,360
‫但是当我们通过for循环最终找到一个具有可接受标签的参与者时,

26
00:02:09,360 --> 00:02:17,940
‫我们可以说, 嘿, 返回的参与者应该指向我们在数组中找到的参与者指针｡

27
00:02:17,940 --> 00:02:22,590
‫然后在for循环结束的时候, 在for循环结束之后, 我们已经看过了所有的参与者｡

28
00:02:22,590 --> 00:02:28,920
‫我们可以继续并返回return actor变量, 因为这是正确的类型｡

29
00:02:29,400 --> 00:02:30,390
‫没关系, 我会的

30
00:02:30,390 --> 00:02:35,400
‫但它要求我们创建一个变量, 还要求我们遍历整个for循环,

31
00:02:35,400 --> 00:02:38,040
‫即使我们已经找到了一个可接受的参与者｡

32
00:02:38,460 --> 00:02:42,180
‫因此, 更好的方法是使用早期返回｡

33
00:02:42,180 --> 00:02:48,240
‫我们以前在抓CP时也见过这种情况｡

34
00:02:48,240 --> 00:02:55,260
‫如果物理句柄等于一个空指针, 那么我们返回并且tick组件的其余部分不需要运行｡

35
00:02:55,260 --> 00:03:00,180
‫我们也可以在for循环中使用同样的效率｡

36
00:03:00,180 --> 00:03:06,960
‫所以我要做的是, 如果我们找到了可以接受的演员, 我们只是要做一个返回演员｡

37
00:03:06,960 --> 00:03:13,500
‫我们实际上是返回在for循环中找到的指针, 而for循环的其余部分不必运行.

38
00:03:13,800 --> 00:03:20,340
‫然而, 如果我们一直到for循环的末尾, 我们没有找到任何东西, 我们没有返回任何东西,

39
00:03:20,340 --> 00:03:23,970
‫return会停止for循环, 离开函数｡

40
00:03:23,970 --> 00:03:28,050
‫但是如果我们到达最后, 我们需要默认返回一些东西｡

41
00:03:28,410 --> 00:03:31,860
‫这是我们可以返回空指针的地方｡

42
00:03:31,860 --> 00:03:33,450
‫因此这是默认值｡

43
00:03:33,450 --> 00:03:35,670
‫这意味着我们已经遍历了整个for循环｡

44
00:03:35,670 --> 00:03:38,040
‫我们已经看到, 没有一个可以接受的演员｡

45
00:03:38,040 --> 00:03:40,410
‫我们重叠的演员都不是｡

46
00:03:41,300 --> 00:03:42,830
‫带着正确的标签｡

47
00:03:42,830 --> 00:03:45,230
‫所以我们返回空指针｡

48
00:03:45,230 --> 00:03:51,260
‫这就意味着我有了一个多余的返回因子变量, 我可以把它去掉.

49
00:03:51,260 --> 00:03:53,510
‫这读起来真的很干净｡

50
00:03:53,510 --> 00:03:58,070
‫我们正在经历, 我们正在获得重叠的演员, 我们正在对他们做一个完整的循环｡

51
00:03:58,070 --> 00:04:02,780
‫如果我们测试每个参与者, 它是否有标签, 可接受的标签？

52
00:04:02,780 --> 00:04:04,550
‫如果是这样, 我们就到此为止｡

53
00:04:04,550 --> 00:04:05,720
‫我们把那个还回去｡

54
00:04:05,720 --> 00:04:08,330
‫如果它们都没有它, 我们返回一个空指针｡

55
00:04:08,330 --> 00:04:11,780
‫所以我们来挑战一下, 如果我们找到了演员, 你会怎么做｡

56
00:04:11,780 --> 00:04:14,570
‫因此, 在tick组件中调用我们的函数｡

57
00:04:14,570 --> 00:04:21,920
‫检查指针是否为空, 并记录两种情况, 无论我们是否有一个演员, 如果我们没有使用一个if和一个else语句｡

58
00:04:21,920 --> 00:04:23,540
‫暂停视频, 开始体验｡

59
00:04:26,460 --> 00:04:26,850
‫凯耶｡

60
00:04:26,850 --> 00:04:27,850
‫欢迎回来｡

61
00:04:27,870 --> 00:04:30,120
‫让我们来看看我们的技术组件｡

62
00:04:30,120 --> 00:04:35,490
‫我们要做的是创建一个变量, 一个参与者指针, 它将成为参与者,

63
00:04:35,490 --> 00:04:40,620
‫这等于得到了一个可接受的参与者.

64
00:04:40,650 --> 00:04:47,220
‫然后我们将执行if actor not equal to

65
00:04:47,220 --> 00:04:56,520
‫null pointer, 然后在这个的主体中, 我们将执行一个u log unlocking, 然后在else中,

66
00:04:56,520 --> 00:05:01,950
‫另一个你这次记录的是re locking, 因为这是我希望我们的触发器组件的行为,

67
00:05:01,950 --> 00:05:08,760
‫并且将它一起移动, 以使它具有如果你有一个石像鬼在那里, 它将解锁, 它将使用移动器, 如果我们基本上取消选中移动复选框,

68
00:05:08,760 --> 00:05:12,750
‫如果我们删除石像鬼, 它将重新锁定｡

69
00:05:12,750 --> 00:05:13,860
‫我们来编译一下｡

70
00:05:13,860 --> 00:05:15,960
‫现在我们按播放键｡

71
00:05:15,990 --> 00:05:19,620
‫你可以看到它被锁上了因为我们没有一个滴水嘴在那里｡

72
00:05:19,650 --> 00:05:21,660
‫把石像鬼捡起来带过来｡

73
00:05:21,660 --> 00:05:22,560
‫就这样｡

74
00:05:22,560 --> 00:05:27,900
‫现在开锁了, 把它拿出来, 它又锁上了, 开锁了, 又锁上了｡

75
00:05:27,900 --> 00:05:28,380
‫好极了｡

76
00:05:28,380 --> 00:05:30,000
‫如果我进去, 什么都不会发生｡

77
00:05:30,000 --> 00:05:31,080
‫只是重新锁定｡

78
00:05:31,230 --> 00:05:38,850
‫所以我们已经成功地找出了触发器组件中是否有东西｡

79
00:05:38,850 --> 00:05:40,680
‫现在我们只需要让它做点什么｡

80
00:05:40,680 --> 00:05:42,750
‫这将是下节课的主题｡

81
00:05:42,750 --> 00:05:43,500
‫我会看到你在那里｡

