﻿1
00:00:04,490 --> 00:00:05,090
‫你好, 欢迎｡

2
00:00:05,090 --> 00:00:07,100
‫在这节课上, 有些事迟了｡

3
00:00:07,130 --> 00:00:12,110
‫我们将在比赛中有一个十字准线, 这将使我们更容易瞄准｡

4
00:00:12,110 --> 00:00:16,790
‫我们还将删除十字准线, 它是一般平视显示器的一部分｡

5
00:00:16,790 --> 00:00:21,950
‫有了它, 我们可以在显示输或赢UI时删除它｡

6
00:00:21,980 --> 00:00:24,380
‫让我们来看看这是怎么发生的｡

7
00:00:25,520 --> 00:00:32,690
‫所以我们希望在我们的世界里有一些UI来告诉我们我们有多少健康, 同时也给予我们一个十字线｡

8
00:00:32,690 --> 00:00:37,610
‫因为在那个时刻, 十字线, 或者十字准线, 因为在我们试图向某人射击的时候,

9
00:00:37,610 --> 00:00:40,880
‫没有那个参考点真的很难做到｡

10
00:00:40,880 --> 00:00:43,400
‫我们将转到UI文件夹｡

11
00:00:43,430 --> 00:00:48,710
‫我们将在此处单击鼠标右键以创建新的用户界面小部件元素,

12
00:00:48,710 --> 00:00:54,080
‫我们将使用WP前缀, 并将Food命名为平视显示器｡

13
00:00:54,380 --> 00:00:57,440
‫现在我们可以打开它了｡

14
00:00:57,440 --> 00:01:05,000
‫首先, 我将创建十字准线, 如果您有十字准线图形, 也可以使用它｡

15
00:01:05,000 --> 00:01:06,980
‫所以你可以在这里使用图像组件｡

16
00:01:07,070 --> 00:01:14,570
‫或者, 我将添加一个文本组件, 然后添加一个加号, 这将是我的十字准线｡

17
00:01:14,600 --> 00:01:17,300
‫非常简单, 非常容易建立原型｡

18
00:01:17,300 --> 00:01:23,090
‫我接下来要做的就是对齐文本, 使其居中对齐｡

19
00:01:23,090 --> 00:01:30,860
‫然后, 我将转到插槽画布面板区域, 并检查内容的大小, 如下图所示,

20
00:01:30,860 --> 00:01:33,740
‫以便十字准线周围的所有内容都很好且紧密｡

21
00:01:33,950 --> 00:01:41,750
‫然后我将校准设置为0｡  5和0｡  5, 这样我们就可以对准十字准线的中心｡

22
00:01:41,750 --> 00:01:47,510
‫最后, 我们要设置锚, 以便使用居中默认值｡

23
00:01:47,510 --> 00:01:53,420
‫然后我将把位置设置为0, 0, 这样十字准线就正好在中间.

24
00:01:53,420 --> 00:01:54,950
‫我将把颜色改为红色｡

25
00:01:54,950 --> 00:01:56,480
‫这很好, 很容易看到｡

26
00:01:56,480 --> 00:02:02,210
‫这里有一个十字准线, 也许我也会把十字准线的尺寸增加一点｡

27
00:02:02,210 --> 00:02:03,920
‫我们来玩吧, 看看感觉如何｡

28
00:02:04,390 --> 00:02:10,190
‫有一个问题, 我们在世界上看不到这个十字准线, 所以我会给你们一个挑战,

29
00:02:10,190 --> 00:02:14,270
‫因为这是我们以前在玩家控制器中做过的事情｡

30
00:02:14,270 --> 00:02:19,070
‫我们已经创建了小部件, 并将它们添加到视口中, 我希望您再次执行相同的操作,

31
00:02:19,070 --> 00:02:21,410
‫以生成一些平视显示UI｡

32
00:02:21,440 --> 00:02:25,030
‫你要在适当的位置增加一个大的播放器控制器｡

33
00:02:25,040 --> 00:02:29,990
‫您需要继续操作, 并向播放器控制器添加一个大型播放,

34
00:02:29,990 --> 00:02:35,180
‫向头文件添加配置, 以便配置要用于平视显示的小部件蓝图, 您需要生成它,

35
00:02:35,180 --> 00:02:37,670
‫并将其添加到视口｡

36
00:02:37,670 --> 00:02:41,510
‫同样,

37
00:02:41,510 --> 00:02:46,760
‫在播放控制器中有相应的代码, 您可以借用这些代码, 然后在蓝图中配置它应该生成哪个类｡

38
00:02:46,760 --> 00:02:49,670
‫所以暂停视频, 开始挑战吧｡

39
00:02:50,600 --> 00:02:51,410
‫欢迎回来｡

40
00:02:51,410 --> 00:02:57,200
‫让我们在射击游戏控制器的头文件中尝试给予｡

41
00:02:57,200 --> 00:03:01,130
‫你可以看到我们已经为挡风玻璃设置了这个｡

42
00:03:01,130 --> 00:03:09,410
‫在上面, 我想添加一个新的类, 它将是H或HUD类｡

43
00:03:09,740 --> 00:03:17,990
‫因此, 我们将把它作为您使用的小部件的DT子类, 然后我们将不得不在“开始播放”中添加｡

44
00:03:17,990 --> 00:03:25,010
‫为此, 我将转到枪并从那里复制声明, 然后将其转移到我们的射击游戏控制器H中, 并在protected部分中添加,

45
00:03:25,010 --> 00:03:32,780
‫然后执行开始play, 记住在Begin Play中必须调用super begin

46
00:03:33,110 --> 00:03:36,560
‫play｡

47
00:03:36,590 --> 00:03:39,260
‫否则一切都无法正常运转｡

48
00:03:39,260 --> 00:03:45,530
‫最后, 我将把这个开始的游戏移到游戏结束的位置, 因为逻辑上这是事情发生的顺序｡

49
00:03:46,140 --> 00:03:48,720
‫接下来, 我们需要设置小部件｡

50
00:03:48,720 --> 00:03:52,200
‫好吧, 这将是非常简单的, 因为它将是完全相同的步骤,

51
00:03:52,200 --> 00:03:55,500
‫我们已经做了设置挡风玻璃和厕所屏幕｡

52
00:03:55,500 --> 00:04:00,330
‫我们将给予它复制到“开始播放”中, 我们将尝试一下｡

53
00:04:00,330 --> 00:04:05,850
‫基本上, 我们不使用挡风玻璃类,

54
00:04:05,850 --> 00:04:11,760
‫而是使用HUD类, 这里不创建挡风玻璃, 我们要做的是创建h, 这就是为什么在所有这些情况下,

55
00:04:11,760 --> 00:04:17,520
‫我都将其称为HD, 如果不为空, 那么我们将其添加到视口中｡

56
00:04:17,520 --> 00:04:23,220
‫让我们转到编辑器, 进行编译, 看看现在是否可以在播放器控制器中进行配置｡

57
00:04:23,220 --> 00:04:29,340
‫我现在要打开BP射击游戏机控制器, 打开完整的蓝图编辑器｡

58
00:04:29,340 --> 00:04:36,030
‫编译完成后, 你应该会看到HUD类作为一个变量弹出, 我们可以在顶部设置它, 对吗？

59
00:04:36,030 --> 00:04:40,440
‫因此, 如果我们单击该下拉菜单, 您可以看到WP､ HUD, 这就是我们要选择的｡

60
00:04:40,440 --> 00:04:41,970
‫我们继续按播放键｡

61
00:04:42,090 --> 00:04:47,310
‫果然, 我们现在有一个巨大的红色十字准线, 可能太大了, 出现在我们的屏幕上｡

62
00:04:47,310 --> 00:04:53,880
‫所以让我们把它做成一个稍微小一点的字体, 也许是47左右｡

63
00:04:54,390 --> 00:04:55,590
‫现在去按播放键｡

64
00:04:55,590 --> 00:04:56,720
‫这可是个大问题｡

65
00:04:57,340 --> 00:04:58,690
‫大小合适的十字准线｡

66
00:04:58,690 --> 00:05:00,250
‫在我看来, 还是有点大｡

67
00:05:00,250 --> 00:05:02,860
‫所以我会把它降到30左右｡

68
00:05:03,160 --> 00:05:04,240
‫试试看｡

69
00:05:05,420 --> 00:05:07,510
‫是啊, 这对我的比赛来说很有意义｡

70
00:05:08,980 --> 00:05:14,220
‫没错, 因为我们是从屏幕中央拍摄的｡

71
00:05:14,220 --> 00:05:20,400
‫接下来你会注意到, 如果我们再一次给予我们的步枪造成伤害, 那么我会打开它的完整蓝图.

72
00:05:20,400 --> 00:05:25,980
‫编辑将伤害设置为50, 这样它可以快速杀死我们, 然后点击播放｡

73
00:05:26,430 --> 00:05:32,070
‫当我们被杀的时候, 十字准线还在那里, 所以我们希望能够移走十字准线｡

74
00:05:32,070 --> 00:05:37,800
‫幸运的是, 删除相当容易, 因为这都在播放器控制器类中,

75
00:05:37,800 --> 00:05:39,870
‫我们已经得到了游戏的结束｡

76
00:05:39,870 --> 00:05:49,380
‫我们要做的基本上是从视口中删除该HUD, 无论我们是否是赢家, 因为我们在这里用其他UI替换它｡

77
00:05:49,380 --> 00:05:55,440
‫但是, 我们无法获取已创建的HUD小部件, 因为我们在此处创建了它并开始播放, 但没有将其保存到任何位置｡

78
00:05:55,440 --> 00:06:01,710
‫在头文件中, 我将在底部附近创建一个新的私有变量,

79
00:06:01,710 --> 00:06:05,040
‫它将成为用户的小部件HUD｡

80
00:06:05,580 --> 00:06:08,130
‫这是一个私有变量, 我们要设置它, 然后开始运算.

81
00:06:08,130 --> 00:06:21,170
‫所以我会把类型从这里移走, 这样就可以确保我们在类中设置变量, 这就意味着我们在游戏结束时可以访问变量.

82
00:06:21,220 --> 00:06:29,670
‫我只是注意到, 我添加了HUD不幸的是游戏到枪头而不是射手玩家控制器头, 这实际上是我想做的｡

83
00:06:29,670 --> 00:06:35,640
‫看起来我还忘了把它设成一个新的属性, 这是应该的, 因为这将是一个指针,

84
00:06:35,640 --> 00:06:41,550
‫我们想保留它, 我们想被正确地垃圾回收｡

85
00:06:41,550 --> 00:06:47,490
‫因此, 是的, 它应该是一个you属性, 即使该属性中没有说明符｡

86
00:06:47,490 --> 00:06:52,980
‫现在我们来看一下, 游戏已经结束了,

87
00:06:52,980 --> 00:07:03,630
‫就在if语句之前, 我想把它从视口中移除, 这样我们就可以做HUD了, 我们现在可以从视口中访问箭头移除, 这只是让它不可见｡

88
00:07:03,630 --> 00:07:06,900
‫让我们转到引擎, 编译并试用它｡

89
00:07:06,900 --> 00:07:10,230
‫一旦编译完成, 我们就开始玩, 把自己干掉｡

90
00:07:11,430 --> 00:07:14,730
‫果然, 我们的平视显示器消失了｡

91
00:07:14,730 --> 00:07:19,410
‫一旦我们重新启动的水平, 它将再次出现, 因为开始发挥得到调用了一次｡

92
00:07:19,650 --> 00:07:21,210
‫这节课就讲到这里｡

93
00:07:21,210 --> 00:07:25,950
‫在下一节课中, 我们将在HUD上设置实际的健康条以及十字准线｡

94
00:07:25,950 --> 00:07:31,980
‫但是你可以看到,

95
00:07:31,980 --> 00:07:41,310
‫我们已经开始在播放控制器中管理我们的UI, 因为现在当我们添加了更多的UI, 播放器控制器也管理, 它能够在一个类中的两个UI之间竞争｡

