﻿1
00:00:04,500 --> 00:00:05,580
‫你好, 欢迎｡

2
00:00:05,580 --> 00:00:12,360
‫在这节课中, 我们将在移动平台中添加变量, 这样我们就可以在编辑器中看到它们,

3
00:00:12,360 --> 00:00:16,560
‫我们将完全用C++来做这件事｡

4
00:00:16,560 --> 00:00:17,790
‫我们开始吧｡

5
00:00:18,360 --> 00:00:23,640
‫所以我们要学习的第一个概念是如何创建变量｡

6
00:00:23,640 --> 00:00:25,890
‫我们以前在《蓝图》中见过他们｡

7
00:00:25,890 --> 00:00:30,090
‫我们知道它们就像盒子, 我们可以把值放进去, 它们有类型｡

8
00:00:30,240 --> 00:00:34,890
‫好吧, 所有这些仍然适用于C++, 除了我们如何创建它们｡

9
00:00:34,890 --> 00:00:39,810
‫之前, 当我们在蓝图中进行此操作时,

10
00:00:39,810 --> 00:00:45,150
‫如果我打开一个级别蓝图, 只是为了向您展示并刷新您的记忆, 那么我们会有这个蓝图窗格,

11
00:00:45,150 --> 00:00:48,300
‫我们在其中添加函数和变量等内容｡

12
00:00:48,300 --> 00:00:51,510
‫然后我们有了事件图, 我们实际上在其中编程｡

13
00:00:51,510 --> 00:00:53,970
‫现在C++非常相似｡

14
00:00:53,970 --> 00:01:02,190
‫我们有两个不同的位置来配置变量和函数, 然后我们实际执行实现｡

15
00:01:02,190 --> 00:01:07,500
‫现在, 让我们转到Visual Studio代码, 打开Visual Studio代码项目并进行查看｡

16
00:01:07,500 --> 00:01:10,650
‫在左手栏中有一个Explorer选项卡｡

17
00:01:10,650 --> 00:01:16,710
‫打开它, 你可以看到你的文件的基本层次结构图｡

18
00:01:16,710 --> 00:01:24,300
‫我们有第五层和障碍攻击, 或者我们自己的项目, 你可以打开它, 你可以看到一些文件夹｡

19
00:01:24,300 --> 00:01:28,410
‫我们感兴趣的是源文件夹, 在那里我们可以找到所有的C++｡

20
00:01:28,410 --> 00:01:35,340
‫然后在那里有障碍攻击文件夹, 然后有两个文件与移动平台的名称｡

21
00:01:35,340 --> 00:01:44,250
‫一个是点文件, 一个是在DOT CP, DOT代表头, CP代表C++｡

22
00:01:44,250 --> 00:01:52,170
‫这基本上有点像我的蓝图, 您可以在其中添加函数和变量以及驻留在头文件（FF文件）中的内容,

23
00:01:52,170 --> 00:02:03,060
‫然后我们有一个点CP, 我们可以在其中实际上像事件图一样, 实际上可以自己进行编码｡

24
00:02:03,330 --> 00:02:06,600
‫所以我们要打开移动平台｡

25
00:02:06,840 --> 00:02:12,300
‫因为我们要加入一个新变量, 你会注意到这里有一大堆东西｡

26
00:02:12,300 --> 00:02:20,910
‫我们不打算详细讨论这个问题, 但最有趣的是, 它定义了移动平台类的含义｡

27
00:02:20,910 --> 00:02:23,370
‫你可以在这里看到一些有趣的关键词｡

28
00:02:23,370 --> 00:02:25,290
‫第十行有个class关键字｡

29
00:02:25,290 --> 00:02:32,160
‫有一个移动平台, 它的前缀是A, 意味着它是一个演员,

30
00:02:32,160 --> 00:02:36,270
‫然后在第11行和第26行有一些花括号｡

31
00:02:36,270 --> 00:02:42,540
‫在这些匹配的花括号之间, 你可以看到有一些东西的声明｡

32
00:02:42,540 --> 00:02:46,200
‫这里有函数, 我们也可以在这里放变量.

33
00:02:46,440 --> 00:02:49,680
‫所以我们要把变量加到这个声明的末尾｡

34
00:02:49,680 --> 00:02:57,810
‫所以在我们关闭大括号之前, 我们可以添加一些新的行, 并在这里开始编写新的变量｡

35
00:02:58,140 --> 00:03:04,440
‫就像蓝图中的变量一样, 我们有一个类型和变量名, 我们也可以给予它一个默认值｡

36
00:03:04,620 --> 00:03:13,530
‫首先我们要创建一个整数, 在C++中, 在Unreal C++中,

37
00:03:13,530 --> 00:03:20,550
‫一个整数用关键字INT 32来表示, 基本上告诉我们这里可以存储多大的值.

38
00:03:20,550 --> 00:03:22,500
‫不, 不是32岁｡

39
00:03:22,530 --> 00:03:23,820
‫它比那要大得多｡

40
00:03:23,820 --> 00:03:28,620
‫32是分配给整数的位数｡

41
00:03:28,650 --> 00:03:34,200
‫现在我们需要一个变量名, 就像类一样, 变量名中不能有空格.

42
00:03:34,200 --> 00:03:38,670
‫所以我们用大写字母来表示我们的单词｡

43
00:03:38,670 --> 00:03:41,520
‫所以我把它叫做int notice｡

44
00:03:41,520 --> 00:03:44,520
‫我把这两个词的开头都大写了｡

45
00:03:44,520 --> 00:03:50,730
‫然后我可以给予它一个默认值, 我们用等号来做这个, 这样我们就有了等于, 然后我们可以给它一个值,

46
00:03:50,730 --> 00:03:53,970
‫比如99｡

47
00:03:54,150 --> 00:03:59,880
‫现在请注意, 我在等号后面和等号前面加了空格｡

48
00:03:59,880 --> 00:04:04,140
‫这实际上并不是绝对必要的, 但它确实使它更容易和更好地阅读｡

49
00:04:04,140 --> 00:04:05,760
‫所以我把它也算进去了｡

50
00:04:05,760 --> 00:04:11,070
‫现在, 在32和整数的实际名称之间显然需要一个空格｡

51
00:04:11,070 --> 00:04:12,690
‫没有它, 一切都无法运转｡

52
00:04:12,960 --> 00:04:20,520
‫然后要完成这个声明, 你需要在行尾放一个分号, 告诉C++你完成了｡

53
00:04:20,520 --> 00:04:26,790
‫事实上, 有新的行, 有空格和制表符, 所有这些对C++来说都不重要｡

54
00:04:26,790 --> 00:04:30,360
‫你可以把所有这些东西放在一起运行, 结果还是一样的｡

55
00:04:30,360 --> 00:04:34,230
‫我可以把这里的空间去掉, 这样仍然可以正常工作｡

56
00:04:34,230 --> 00:04:38,040
‫就C++而言, 这些都是完全有效的C++｡

57
00:04:38,040 --> 00:04:40,590
‫这真的很可怕, 可怕的阅读｡

58
00:04:40,800 --> 00:04:48,000
‫所以我们要做的是用制表符保持这种缩进水平, 同时保持这种间距水平, 这只是为了我们的理智｡

59
00:04:48,450 --> 00:04:52,380
‫现在, 这在Blueprint Editor中是不可见的｡

60
00:04:52,380 --> 00:04:58,410
‫为了使它可见, 我们需要给予Unreal一点提示, 它应该显示一个变量｡

61
00:04:58,410 --> 00:05:03,770
‫我们这样做的方法是在前一行中键入您的属性all caps｡

62
00:05:04,330 --> 00:05:11,170
‫然后打开圆括号, 然后使用所谓的骆驼大小写, 基本上就是大写每个单词的首字母, 然后在任何地方编辑,

63
00:05:11,170 --> 00:05:17,460
‫就像这样, 然后关闭圆括号｡

64
00:05:17,470 --> 00:05:19,420
‫此行的结尾不需要分号｡

65
00:05:19,420 --> 00:05:26,770
‫这是不正确的, 因为它实际上是同一个声明的一部分, 就像它下面一行的整数一样｡

66
00:05:27,160 --> 00:05:32,470
‫但我们把它们放在单独的行上, 只是为了让我们的生活更容易阅读这篇文章｡

67
00:05:32,470 --> 00:05:39,100
‫所以我们已经得到了属性编辑, 在30到int的任何地方, 然后是等号, 然后是99｡

68
00:05:39,100 --> 00:05:42,790
‫在默认情况下, 您将文件保存在此处, 这一点很重要｡

69
00:05:42,790 --> 00:05:44,980
‫您需要按控制键来执行此操作｡

70
00:05:45,100 --> 00:05:52,660
‫如果你进入文件菜单, 你可以点击自动保存作为一个选项, 这样你就不必点击保存每次你改变的东西｡

71
00:05:52,750 --> 00:05:53,890
‫这就是我的工作

72
00:05:53,890 --> 00:06:00,190
‫这样, 我们就可以关闭编辑器, 重新编译并重新打开它,

73
00:06:00,190 --> 00:06:03,100
‫这样我们的移动平台上就有了一个新变量｡

74
00:06:03,100 --> 00:06:08,560
‫但是如果我们每次修改代码时都必须关闭编辑器, 那就有点麻烦了｡

75
00:06:08,560 --> 00:06:12,160
‫因此, Unreal中有一个功能叫做Live Coding｡

76
00:06:12,160 --> 00:06:18,130
‫我将关闭关卡蓝图, 并向大家展示右下角有一个按钮,

77
00:06:18,130 --> 00:06:21,970
‫看起来像一组消失在远处的立方体｡

78
00:06:21,970 --> 00:06:27,790
‫如果你把鼠标悬停在上面, 上面写着“重新编译和重新加载游戏的C++代码”,

79
00:06:27,790 --> 00:06:36,340
‫点击这个按钮, 一个终端就会显示一个消息日志, 这些消息是编译代码的结果｡

80
00:06:36,730 --> 00:06:41,380
‫现在, 它的运行速度将比以前快得多,

81
00:06:41,470 --> 00:06:46,210
‫因为这不是它第一次运行, 当它完成时, 它会给予你一个通知, 告诉你实时编码成功了｡

82
00:06:46,450 --> 00:06:53,650
‫如果实时编码没有成功, 那么很重要的一点是,

83
00:06:53,650 --> 00:07:03,340
‫如果您需要寻求帮助, 请复制错误之前的日志结果并将其发布在问答中, 但同时也要仔细检查并确保您的语法与我在屏幕上键入的语法相匹配｡

84
00:07:03,520 --> 00:07:10,630
‫通常我们会发现这只是一个打字错误, 人们已经作出, 它不编译, 因为这一点｡

85
00:07:10,630 --> 00:07:18,550
‫请密切注意您的大小写, 因为大小写通常非常重要, 分号也是如此｡

86
00:07:18,550 --> 00:07:20,950
‫人们经常忘记包括那些｡

87
00:07:21,100 --> 00:07:26,200
‫所以现在我想挑战你在头文件的新行中添加你自己的变量｡

88
00:07:26,200 --> 00:07:30,190
‫因此, 请将其设为float或bull类型, 并为其指定不同的名称｡

89
00:07:30,190 --> 00:07:32,020
‫变量不能共享同一名称｡

90
00:07:32,020 --> 00:07:33,100
‫它们必须是不同的｡

91
00:07:33,340 --> 00:07:34,990
‫为其指定默认值｡

92
00:07:34,990 --> 00:07:38,050
‫因此, 如果它是浮点数, 则默认值的格式需要为｡

93
00:07:38,050 --> 00:07:39,970
‫点什么, 点什么, 点什么

94
00:07:39,970 --> 00:07:47,560
‫如果是布尔值, 它需要是true或false, 全部小写, 使用实时编码重新编译,

95
00:07:47,560 --> 00:07:55,210
‫然后看看是否有任何错误, 如果有, 请返回, 看看我是如何做的, 以双重检查您是否以正确的方式编写了它｡

96
00:07:55,300 --> 00:07:57,250
‫暂停视频, 开始体验｡

97
00:08:00,500 --> 00:08:00,890
‫好吧, 我会的

98
00:08:00,890 --> 00:08:01,790
‫欢迎回来｡

99
00:08:02,060 --> 00:08:06,440
‫让我们回到Visual Studio代码中, 我们将添加一个变量.

100
00:08:06,440 --> 00:08:09,470
‫所以首先, 我们要把它变成一个新的财产｡

101
00:08:09,470 --> 00:08:13,400
‫它是开括号和编辑任何地方和关闭括号｡

102
00:08:13,400 --> 00:08:21,530
‫然后在新的一行中, 我将把它设为float类型, 我们将称它为我的float, 只是为了保持这里的传统｡

103
00:08:21,620 --> 00:08:27,320
‫我们给予设为默认值5｡  99,

104
00:08:27,320 --> 00:08:31,420
‫然后在行尾加上分号, 确保你有我刚才在这里输入的所有组件｡

105
00:08:32,060 --> 00:08:34,130
‫然后我再加一些空格｡

106
00:08:34,130 --> 00:08:36,980
‫请注意, 我添加了多个新行｡

107
00:08:36,980 --> 00:08:39,110
‫你有多少新台词并不重要｡

108
00:08:39,110 --> 00:08:40,670
‫空格不重要｡

109
00:08:40,670 --> 00:08:44,750
‫就像我说的, 我们会有一个新的财产了｡

110
00:08:44,930 --> 00:08:51,920
‫编辑任何bool类型的地方, 我把它命名为bool, 我给予它默认值, true,

111
00:08:51,920 --> 00:08:55,760
‫并在末尾加一个分号.

112
00:08:55,760 --> 00:08:58,340
‫现在, 如果您有自动保存功能, 则不必保存, 但您确实需要保存｡

113
00:08:58,340 --> 00:09:01,220
‫如果你不这样做, 那么我们回到编辑器｡

114
00:09:01,220 --> 00:09:10,700
‫我们点击右下角的实时编码按钮, 日志就会出现, 希望我们能成功, 它已经为我做了｡

115
00:09:10,700 --> 00:09:16,490
‫但我只是想告诉你, 如果我犯了一个错误会发生什么, 比如省略了分号和这一行的结尾, 而不是一个漂亮的,

116
00:09:16,490 --> 00:09:20,300
‫令人放心的绿色｡

117
00:09:20,300 --> 00:09:25,550
‫在日志的末尾, 您将看到一个红色的构建失败消息｡

118
00:09:25,550 --> 00:09:31,520
‫因此, 如果您的构建失败, 首先检查您的代码, 确保它与我的代码匹配,

119
00:09:31,520 --> 00:09:38,030
‫这一点很重要, 因为正如我所说, 这通常只是一个错别字, 如果不是,

120
00:09:38,030 --> 00:09:42,290
‫则复制此代码并将其放在问答中, 然后寻求帮助｡

121
00:09:42,350 --> 00:09:49,220
‫也就是说, 我现在要更正代码并重新编译它, 成功后,

122
00:09:49,220 --> 00:09:56,180
‫我可以关闭日志, 在大纲中查找移动平台, 然后选择移动平台,

123
00:09:56,180 --> 00:10:00,590
‫在详细信息窗格中查看我创建的所有变量｡

124
00:10:00,590 --> 00:10:07,040
‫它们是int, 浮点数, 布尔值, 还有我们给它们的默认值.

125
00:10:07,040 --> 00:10:10,040
‫现在, 值得注意的是, 这些确实只是默认值｡

126
00:10:10,040 --> 00:10:16,730
‫所以如果你在编辑器中, 在Blueprint或者在level中覆盖这些值, 然后你在C++中更改它们,

127
00:10:16,730 --> 00:10:21,110
‫C++中的更改将不再有效｡

128
00:10:21,110 --> 00:10:22,580
‫它们只是默认值｡

129
00:10:22,580 --> 00:10:28,580
‫因此, 如果您在Blueprint中进行了更改, 则该更改将优先并覆盖您在C++中所做的任何更改｡

130
00:10:28,610 --> 00:10:29,360
‫很棒的东西｡

131
00:10:29,360 --> 00:10:35,420
‫我们已经创建了第一个变量, 第一个C++代码, 并使用实时编码将其引入｡

132
00:10:35,420 --> 00:10:37,250
‫我们下节课再见｡

