﻿1
00:00:04,770 --> 00:00:06,070
‫欢迎回来

2
00:00:06,090 --> 00:00:11,850
‫在本视频中, 我们将区分特定蓝本类的实例与默认蓝本,

3
00:00:11,850 --> 00:00:17,130
‫默认蓝本是适用于所有实例的蓝本｡

4
00:00:17,130 --> 00:00:25,050
‫我们还将了解如何在蓝图中为特定的C++变量分配､ 读取或写入访问权限｡

5
00:00:25,050 --> 00:00:26,360
‫那么我们开始吧｡

6
00:00:26,370 --> 00:00:30,810
‫我们现在准备开始向Blueprint公开我们的一些组件｡

7
00:00:30,930 --> 00:00:38,040
‫这里有我们的组件, 我们可以看到, 如果单击每个组件, 我们的详细信息面板将完全为空｡

8
00:00:38,040 --> 00:00:45,960
‫所以我们需要学习如何向蓝图公开某些属性, 我们通过使用U属性宏来实现这一点｡

9
00:00:45,960 --> 00:00:51,060
‫因此, 让我们跳回到VS代码, 看看You属性宏｡

10
00:00:51,090 --> 00:00:53,010
‫这是一个特殊的宏｡

11
00:00:53,010 --> 00:00:59,730
‫这是Unreal Engine独有的, 它有一组括号,

12
00:00:59,730 --> 00:01:06,390
‫因为它可以输入参数, 为了展示如何以某种方式公开, 我们只需要创建一些一次性变量,

13
00:01:06,390 --> 00:01:09,870
‫完成后可以删除.

14
00:01:09,870 --> 00:01:15,450
‫我们要用这些来看看曝光度是怎么工作的, 这样我们就可以得到一些整数｡

15
00:01:15,450 --> 00:01:21,600
‫让我们创建一个int32, 我把它叫做在任何地方都可见的｡

16
00:01:21,600 --> 00:01:27,090
‫这里我把它初始化为一个值, 比如12｡

17
00:01:27,090 --> 00:01:33,390
‫现在, 为了将其公开给反射系统, 我们需要一个新的属性宏｡

18
00:01:33,390 --> 00:01:36,480
‫这只是一个普通的整型变量｡

19
00:01:36,660 --> 00:01:41,880
‫它不是这样的组件, 因此不会显示在“组件”选项卡中｡

20
00:01:41,910 --> 00:01:48,600
‫请记住, 在蓝图中, 我们有这个组件部分, 这里显示了所有组件,

21
00:01:48,600 --> 00:01:51,630
‫但也会显示所有常规变量｡

22
00:01:51,630 --> 00:01:58,590
‫例如, 如果我们单击BP Pond､ Tank Self,

23
00:01:58,590 --> 00:02:00,120
‫我们将在此处看到所有其他非组件变量｡

24
00:02:00,120 --> 00:02:05,250
‫回到vs代码, 让我们决定如何公开visible｡

25
00:02:05,250 --> 00:02:09,600
‫好了, 我将向您们介绍一些属性关键字

26
00:02:09,600 --> 00:02:13,090
‫这些选项可以放在U的括号里｡

27
00:02:13,110 --> 00:02:14,280
‫属性宏｡

28
00:02:14,490 --> 00:02:17,400
‫对于这个, 我们将添加visible anywhere｡

29
00:02:17,430 --> 00:02:19,860
‫现在让我们继续编译它｡

30
00:02:20,100 --> 00:02:20,520
‫好吧, 我会的

31
00:02:20,520 --> 00:02:23,250
‫我们已经编译好了, 让我们跳回到编辑器｡

32
00:02:23,250 --> 00:02:30,780
‫在BP Pond Tank中, 我在这里自行选择了BP Pond Tank,

33
00:02:30,780 --> 00:02:38,340
‫我可以在详细信息面板中搜索visible, 这里是我的visible anywhere int｡ 请注意, 由于我们使用Camel

34
00:02:38,340 --> 00:02:44,160
‫Case命名, 蓝图在每个单词之间放置了空格｡ 检查一下, 我们可以看到它的值为12,

35
00:02:44,160 --> 00:02:46,350
‫并且显示为灰色｡

36
00:02:46,350 --> 00:02:48,960
‫我们实际上根本无法编辑此内容｡

37
00:02:48,960 --> 00:02:50,580
‫这就是随处可见的意思｡

38
00:02:50,580 --> 00:02:54,270
‫这意味着它是可见的, 但我们无法编辑此属性｡

39
00:02:54,300 --> 00:02:57,540
‫好的, 让我们继续创建另一个INT 32｡

40
00:02:57,540 --> 00:03:00,960
‫我把这个叫做edit anywhere int｡

41
00:03:01,260 --> 00:03:10,230
‫我给予它一个值, 比如22, 它会有自己的U属性宏, 而不是在任何地方都是可见的,

42
00:03:10,230 --> 00:03:13,770
‫我给它一个关键字.

43
00:03:13,770 --> 00:03:15,210
‫随处编辑｡

44
00:03:15,300 --> 00:03:21,690
‫让我们继续编译它, 然后回到编辑器中, 我将搜索edit anywhere,

45
00:03:21,690 --> 00:03:28,080
‫这是我的edit anywhere, 您可以看到它的值为22, 只是它不再变灰｡

46
00:03:28,080 --> 00:03:30,060
‫我可以选择它, 我可以改变它｡

47
00:03:30,060 --> 00:03:31,320
‫它是可编辑的｡

48
00:03:31,320 --> 00:03:32,970
‫这就是随处编辑的意思｡

49
00:03:32,970 --> 00:03:34,560
‫这意味着我们可以改变它｡

50
00:03:34,590 --> 00:03:42,600
‫因此, 即使我们在C++中将其初始化为22, 我们也可以在蓝图中覆盖该值, 并为其给予新值｡

51
00:03:42,600 --> 00:03:48,780
‫现在, 您已经了解了“随处可见”和“随处编辑”, 但还有比这两个关键字更多的关键字｡

52
00:03:48,780 --> 00:03:58,350
‫例如, 我们创建一个新的int 32, 并将其命名为一个可见实例, 并将其初始化为11｡

53
00:03:58,350 --> 00:04:05,940
‫现在它将得到它的you属性宏, 我给予它的关键字是visible instance only.

54
00:04:05,940 --> 00:04:12,630
‫让我们编译它, 然后回到蓝图的细节面板中, 我现在要搜索visible, 注意, 我们可以看到visible

55
00:04:12,630 --> 00:04:17,340
‫anywhere, int, 但是我们的新变量在哪里？

56
00:04:17,340 --> 00:04:19,440
‫我们称之为仅可见实例｡

57
00:04:19,440 --> 00:04:21,960
‫INT仅查看可见实例｡

58
00:04:21,960 --> 00:04:24,720
‫我们在这里看不到, 但是看看这个｡

59
00:04:24,720 --> 00:04:29,730
‫我要把我们的BP水池拖到外面的世界里｡

60
00:04:29,730 --> 00:04:31,560
‫而我们在外面的世界里可以看到班轮｡

61
00:04:31,560 --> 00:04:35,370
‫突然间, 我们在世界上有了一个BP池塘｡

62
00:04:35,370 --> 00:04:42,300
‫现在, 选择了这个, 我可以进入详细信息面板, 搜索visible, 现在, 看看这个, 现在,

63
00:04:42,300 --> 00:04:48,810
‫我们可以看到visible anywhere int和visible instance only int｡

64
00:04:48,810 --> 00:04:54,750
‫所以我们怎么能在这里看到它, 但是当我们看实际的蓝图本身时, 我们看不到它｡

65
00:04:54,750 --> 00:04:56,790
‫我想做个区分

66
00:04:56,790 --> 00:05:01,770
‫您可以看到, 当我们在内容浏览器中显示蓝图时, 我们可以双击它,

67
00:05:01,770 --> 00:05:03,750
‫打开它并查看其属性｡

68
00:05:03,750 --> 00:05:04,020
‫什么？你说什么？

69
00:05:04,090 --> 00:05:07,150
‫我们在这里看到的是默认蓝图｡

70
00:05:07,150 --> 00:05:11,140
‫其中包含蓝图的所有默认信息｡

71
00:05:11,140 --> 00:05:16,360
‫但是, 只要我将一个实例拖到级别中, 我们就有了一个实例｡

72
00:05:16,360 --> 00:05:23,530
‫所以这个世界上存在的BP-—水箱是BP池塘水箱的一个例子｡

73
00:05:23,530 --> 00:05:31,510
‫事实上, 我们可以拖出多个实例, 而世界上存在的每个实例都是BP水池的实例｡

74
00:05:31,510 --> 00:05:34,840
‫这与默认蓝本不同｡

75
00:05:35,080 --> 00:05:42,520
‫这里有一个小图表, 供大家参考, 我们会在学习更多说明符的时候, 把这个图表填得更满｡

76
00:05:42,520 --> 00:05:49,420
‫到目前为止, 我们只看到了可见的任何地方, 你会看到在默认值和实例列下｡

77
00:05:49,540 --> 00:05:52,120
‫它位于标题为“只读”的行中｡

78
00:05:52,120 --> 00:05:57,640
‫所以你可以从这个图中看到, 一个可见的地方你的属性只会是可见的｡

79
00:05:57,640 --> 00:06:02,260
‫它将不可编辑, 但在默认值和实例中均可见｡

80
00:06:02,260 --> 00:06:07,510
‫而visible instance only只对该实例具有只读访问权限｡

81
00:06:07,510 --> 00:06:10,540
‫您实际上无法在默认蓝图上看到它｡

82
00:06:10,540 --> 00:06:17,530
‫然后我们学习了编辑任意位置, 它允许我们实际编辑默认值和实例上的属性｡

83
00:06:17,530 --> 00:06:21,730
‫这就是为什么它同时存在于默认值和实例列中的原因｡

84
00:06:21,730 --> 00:06:27,010
‫所以作为一个挑战, 我希望你添加一个变量到基本池塘类｡

85
00:06:27,010 --> 00:06:32,920
‫现在把它放在public部分, 你要做的就是决定你想添加什么类型的变量, 它可以是任何类型,

86
00:06:32,920 --> 00:06:38,020
‫但不能是基本类型, 比如整型或浮点型.

87
00:06:38,170 --> 00:06:46,540
‫你甚至可以把它变成一个F向量或者一个F字符串, 如果你想用一个默认值初始化它, 就像我们的另一端30个二进制数｡

88
00:06:46,810 --> 00:06:49,030
‫这个变量可以是你想要的任何变量｡

89
00:06:49,030 --> 00:06:52,990
‫你可以设置速度变量或耐力变量｡

90
00:06:52,990 --> 00:06:54,370
‫你在这里有一些自由｡

91
00:06:54,370 --> 00:07:00,820
‫现在, 一旦你创建了这个变量, 决定你想要它的访问级别, 然后给予它一个你的属性宏,

92
00:07:00,820 --> 00:07:04,440
‫并在这里添加正确的指定｡

93
00:07:04,450 --> 00:07:10,210
‫现在决定是只在实例上显示还是在默认值上显示, 或者是在任何地方显示或编辑,

94
00:07:10,210 --> 00:07:16,210
‫使用我们到目前为止学到的说明符之一, 并为该变量指定正确的值,

95
00:07:16,210 --> 00:07:21,160
‫然后暂停视频并立即生成该变量｡

96
00:07:23,970 --> 00:07:24,690
‫好吧, 我会的

97
00:07:24,690 --> 00:07:26,800
‫所以我将继续创建一个变量｡

98
00:07:26,820 --> 00:07:29,250
‫现在, 如果你做了一些完全不同的东西也没关系｡

99
00:07:29,250 --> 00:07:30,810
‫这只是练习｡

100
00:07:30,810 --> 00:07:38,100
‫我将创建一个浮点数, 我将调用这个速度, 我将初始化速度为400 F｡

101
00:07:38,700 --> 00:07:45,930
‫我想我希望这个速度变量在实例和默认情况下都是可编辑的｡

102
00:07:45,930 --> 00:07:52,050
‫我将给予它一个U属性宏, 在任意位置进行编辑.

103
00:07:52,050 --> 00:07:54,360
‫所以我将继续编译这个｡

104
00:07:54,360 --> 00:08:00,180
‫回到编辑器中, 我可以选择一个基本的坦克实例｡

105
00:08:00,330 --> 00:08:06,870
‫在这里的详细信息面板中, 我可以看到我的速度变量, 当然我可以在这里编辑它｡

106
00:08:06,870 --> 00:08:13,290
‫如果我打开—-tank, 这是我的速度变量, 它被设置为400, 并且是可编辑的｡

107
00:08:13,290 --> 00:08:20,220
‫总之, 我们已经了解了实例与特定蓝图类的默认值之间的区别｡

108
00:08:20,220 --> 00:08:27,240
‫我们还学习了一些新的属性说明符, 如Visible Anywhere､ Visible､ instance only和edit anywhere｡

109
00:08:27,240 --> 00:08:35,880
‫在下一个视频中, 我们将继续学习如何使用这些新的属性说明符来控制对Blueprint中C++变量的访问｡

110
00:08:35,970 --> 00:08:36,900
‫我很快就会见到你的｡

