﻿1
00:00:04,320 --> 00:00:06,060
‫大家好, 欢迎这堂课｡

2
00:00:06,060 --> 00:00:10,950
‫我们将研究如何将内容写入输出日志,

3
00:00:10,950 --> 00:00:16,290
‫特别是如何将变量值写入日志, 以帮助我们调试游戏.

4
00:00:16,290 --> 00:00:18,450
‫让我们深入了解一下它是如何工作的｡

5
00:00:19,470 --> 00:00:26,640
‫因此, 在Blueprint中, 当我们希望快速显示某些信息或可能只是调试过去的某些内容时,

6
00:00:26,640 --> 00:00:30,340
‫我们能够将内容写入屏幕｡

7
00:00:30,360 --> 00:00:38,820
‫我们在C++中使用了一个新的属性来做这个, 但是我们实际上可以使用一个log语句来做这个, 它有点复杂, 有点不真实,

8
00:00:38,820 --> 00:00:43,610
‫这就是为什么我在这里之前一直回避做这个｡

9
00:00:43,620 --> 00:00:47,850
‫因此, 在向您介绍C++之前, 我们对它的语法有一点熟悉｡

10
00:00:48,180 --> 00:00:56,430
‫现在, 它的工作方式是, 如果你在这里得到了扩展, 安装了四个不真实的代码片段,

11
00:00:56,430 --> 00:01:01,200
‫这实际上会变得更容易, 因为你不必记住所有复杂的语法｡

12
00:01:01,200 --> 00:01:07,860
‫你只要输入, 你记录, 它会弹出一个智能感知对话框, 就像这样, 说你记录,

13
00:01:07,860 --> 00:01:13,590
‫以帮助你写出整个代码, 你可以点击, 输入或选择它与您的鼠标｡

14
00:01:13,590 --> 00:01:18,240
‫然后你会看到它写出了一个看起来有点像函数的东西｡

15
00:01:18,240 --> 00:01:21,120
‫它实际上并不是一个隐藏的功能｡

16
00:01:21,510 --> 00:01:27,660
‫这里面有一点不真实的魔力, 但本质上有点像函数｡

17
00:01:27,660 --> 00:01:33,330
‫所以我们要做的就是把几个参数传递给这个函数.

18
00:01:33,330 --> 00:01:40,890
‫第一个选项告诉我们正在处理的日志类别的类型｡

19
00:01:40,890 --> 00:01:44,700
‫第二个告诉我们日志的级别｡

20
00:01:44,700 --> 00:01:46,860
‫所以这件事有多紧急｡

21
00:01:47,160 --> 00:01:52,950
‫最后我们得到了这个东西, 它基本上是一个函数中的函数,

22
00:01:52,950 --> 00:01:56,790
‫它告诉我们需要打印的文本｡

23
00:01:57,060 --> 00:01:58,980
‫那么这是如何工作的呢？

24
00:01:58,980 --> 00:02:05,730
‫如果我们把它留在代码中, 进入到非真实命中编译, 我们想看看它在哪里出现？

25
00:02:05,730 --> 00:02:10,230
‫编译完成后, 我们将继续并单击播放｡

26
00:02:10,530 --> 00:02:15,480
‫你实际上要找的是它不会出现在屏幕上｡

27
00:02:15,480 --> 00:02:17,520
‫它将在输出中｡

28
00:02:17,520 --> 00:02:22,630
‫在这里登录, 您可以在这里看到它｡

29
00:02:22,630 --> 00:02:28,230
‫它说, 显示你的消息, 我们有多少消息？

30
00:02:28,230 --> 00:02:30,960
‫一, 二, 三, 四, 五｡

31
00:02:31,110 --> 00:02:39,930
‫这样做的原因是它为我们场景中的每一个演员显示信息, 这是一个移动的平台｡

32
00:02:39,960 --> 00:02:43,770
‫所以这就是为什么我们会收到这么多信息｡

33
00:02:43,770 --> 00:02:48,030
‫你可以看到, 我们可以把信息改变成我们想要的样子｡

34
00:02:48,540 --> 00:02:59,100
‫我们还可以在这个消息中加入更多的信息, 比如开始位置或者演员的名字, 诸如此类｡

35
00:02:59,280 --> 00:03:00,810
‫我们开始吧｡

36
00:03:00,810 --> 00:03:06,120
‫我们有一个输出日志, 我们有我们的消息, 你可以开始看到我所说的类别｡

37
00:03:06,120 --> 00:03:13,710
‫你可以看到这里是log temp, 上面是log audio log audio mixer Log World.

38
00:03:13,710 --> 00:03:18,480
‫因此, 有不同类别的日志记录可以帮助我们区分这条消息来自哪里？

39
00:03:18,480 --> 00:03:21,060
‫这是从虚幻的哪一部分来的？

40
00:03:21,060 --> 00:03:26,790
‫但我们将主要使用log temp, 因为它只是一个用于注销调试消息的临时位置,

41
00:03:26,790 --> 00:03:29,340
‫然后是显示｡

42
00:03:29,340 --> 00:03:35,130
‫这是默认级别, 即日志级别, 但我们可以有消息, 可以是一系列不同的东西｡

43
00:03:35,130 --> 00:03:39,390
‫它可以显示在下面的表中的任何值｡

44
00:03:39,390 --> 00:03:43,680
‫因此, 您可以看到此处显示的消息将打印到控制台和日志文件中｡

45
00:03:43,680 --> 00:03:48,150
‫我们在这里看到了日志, 它只在日志文件中打印消息, 而不在控制台中显示｡

46
00:03:48,150 --> 00:03:53,400
‫所以这是针对那些你不想让它显示太多, 但可能想用它来调试的事情｡

47
00:03:53,400 --> 00:03:58,770
‫如果您正在调试某人的游戏, 并且该游戏在他们的计算机上运行, 则他们会向您发送一个日志文件｡

48
00:03:58,770 --> 00:04:00,270
‫那你就有警告了｡

49
00:04:00,270 --> 00:04:07,530
‫这是为当事情似乎出了问题, 它打印到日志控制台, 它也是黄色的｡

50
00:04:07,560 --> 00:04:15,480
‫然后我们会遇到一个错误, 它以红色显示, 然后是致命的, 基本上是打印到控制台, 并使引擎崩溃｡

51
00:04:15,480 --> 00:04:22,500
‫因此, 您可能希望将此方法作为最后的手段, 但它确实允许您在日志文件中使用不同的级别｡

52
00:04:22,500 --> 00:04:27,330
‫我会给你们看如果我们在这里放不同的信息会是什么样子｡

53
00:04:27,330 --> 00:04:32,790
‫我将复制我们的记录行, 我将制作三个｡

54
00:04:32,790 --> 00:04:37,980
‫我们将有一个显示, 将有一个警告, 我们将有一个错误｡

55
00:04:37,980 --> 00:04:40,890
‫现在, 这些是我们将使用的典型级别｡

56
00:04:40,890 --> 00:04:43,980
‫我们来看看它们是什么样子的｡

57
00:04:43,980 --> 00:04:49,170
‫让我们进入虚幻, 点击编译按钮, 让我们停止并重新开始播放｡

58
00:04:49,170 --> 00:04:55,290
‫顺便说一下, 您可以通过按两次波浪号键来调出输出日志｡

59
00:04:55,380 --> 00:05:02,070
‫它显示了输出日志, 您可以看到我们有三组消息, 显示屏上只有纯白色警告,

60
00:05:02,070 --> 00:05:05,970
‫黄色警告｡

61
00:05:05,970 --> 00:05:09,690
‫所以它更突出了一点, 一个错误, 很明显, 它更突出了｡

62
00:05:09,690 --> 00:05:12,360
‫现在, 我们可以将数据添加到日志消息中｡

63
00:05:12,360 --> 00:05:18,600
‫我将删除日志中的警告和错误行, 然后添加一些｡

64
00:05:18,700 --> 00:05:21,280
‫然后输入到这个字符串中, 这个字符串将被打印出来｡

65
00:05:21,280 --> 00:05:27,190
‫例如,

66
00:05:27,190 --> 00:05:36,190
‫如果我想打印出为特定平台配置的移动距离, 这非常简单, 我们可以说“配置的移动距离”, 这就是将要显示的文本｡

67
00:05:36,190 --> 00:05:37,840
‫我在这里加个冒号｡

68
00:05:37,840 --> 00:05:44,560
‫记住, 这些都在双引号内, 以确保我们包括在文本中｡

69
00:05:45,010 --> 00:05:51,460
‫然后我们可以在百分号后面加上F字符｡

70
00:05:51,610 --> 00:05:57,360
‫您可以看到, 它以不同的方式突出显示, 因为这就是此处指定的格式｡

71
00:05:57,400 --> 00:06:01,900
‫这是历史上C的由来｡

72
00:06:01,900 --> 00:06:08,350
‫通常你会画一个百分号, 然后是一些字母, 你可以看到下面的不同字母｡

73
00:06:08,380 --> 00:06:17,410
‫F对应于十进制浮点数, 您可以在示例列中看到输出的示例｡

74
00:06:17,410 --> 00:06:26,530
‫这里还有很多其他的东西我们可以用D或者I来表示十进制整数｡

75
00:06:26,980 --> 00:06:30,820
‫所以我们用F是因为我们有一个浮点数｡

76
00:06:30,820 --> 00:06:35,230
‫然后我们要做的就是在E log函数中加入另一个参数｡

77
00:06:35,230 --> 00:06:45,520
‫所以确保你是在关闭了这个文本函数的括号之后这样做的, 而不是在这里之后放一个逗号｡

78
00:06:45,520 --> 00:06:52,690
‫所以在这两个括号之间, 它应该在外部集合的内部, 但是在内部集合的外部, 如果这有意义的话｡

79
00:06:52,900 --> 00:07:00,910
‫然后我们可以传递变量的值, 这样我们就可以传递移动距离变量, 就像这样, 让我们进入虚幻,

80
00:07:00,910 --> 00:07:04,390
‫看看它的实际操作｡

81
00:07:04,390 --> 00:07:11,860
‫我点击了编译按钮, 关闭了编译窗口, 点击了播放, 然后点击了两次Tilde来打开日志｡

82
00:07:11,860 --> 00:07:17,980
‫您可以看到不同平台的配置移动距离,

83
00:07:17,980 --> 00:07:24,130
‫两个移动平台为50500, 场景中的三次推送为1500｡

84
00:07:24,130 --> 00:07:29,620
‫所以有一点有趣或者有启发性的信息是,

85
00:07:29,620 --> 00:07:39,490
‫我们之前已经讨论过, 我们是如何超过或者确实超过移动的距离的, 我们很想知道这是在什么水平上发生的｡

86
00:07:39,490 --> 00:07:43,510
‫所以我们可以在if语句中创建一个浮点变量｡

87
00:07:43,510 --> 00:07:45,520
‫所以我们知道, 我们目前已经超出了｡

88
00:07:45,520 --> 00:07:49,900
‫我们可以说过冲一个浮点变量叫过冲｡

89
00:07:49,900 --> 00:07:56,440
‫我们将它设为移动距离减去移动距离｡

90
00:07:56,440 --> 00:07:59,740
‫这就告诉了我们超调量是多少｡

91
00:07:59,740 --> 00:08:04,330
‫我想让你们试着记录一下我们刚刚创建的过冲变量｡

92
00:08:04,330 --> 00:08:06,610
‫所以使用Yule日志功能｡

93
00:08:06,610 --> 00:08:11,470
‫在这里, 它是供参考的, 至少是你可能会使用的那种结构｡

94
00:08:11,470 --> 00:08:21,220
‫您也可以练习使用日志自动完成功能, 然后编译和测试代码, 看看它是否工作｡

95
00:08:21,220 --> 00:08:22,660
‫暂停视频, 开始体验｡

96
00:08:25,690 --> 00:08:26,170
‫好吧, 我会的

97
00:08:26,170 --> 00:08:26,970
‫欢迎回来｡

98
00:08:26,980 --> 00:08:30,790
‫因此, 我们将在此处使用自动完成选项｡

99
00:08:30,790 --> 00:08:33,280
‫我将关闭侧边栏, 以便留出更多空间｡

100
00:08:33,400 --> 00:08:40,450
‫在这个里面, 如果我们创建了变量, 我们会输入你的日志, 然后按回车键,

101
00:08:40,960 --> 00:08:43,360
‫然后我们会让它显示出来｡

102
00:08:43,360 --> 00:08:52,690
‫我们要让文本平台过冲, 然后我们要使用百分比F, 然后在这两个括号之间,

103
00:08:52,690 --> 00:09:02,020
‫我们要为过冲变量添加一个新的参数, 就像这样, 现在让我们回到虚幻｡

104
00:09:02,050 --> 00:09:08,770
‫我点击编译按钮, 关闭实时编码日志, 点击播放, 双击那个波浪号键｡

105
00:09:09,310 --> 00:09:15,340
‫你可以看到, 每次平台转向时, 它都会打印出一条日志消息,

106
00:09:15,340 --> 00:09:17,560
‫说明超出了多少单位｡

107
00:09:17,560 --> 00:09:18,730
‫你可以看到网｡

108
00:09:18,730 --> 00:09:27,190
‫在很多情况下, 它会超过相当多的单位, 相当明显的单位数量, 三个单位或0｡

109
00:09:27,190 --> 00:09:27,190
‫五个单位｡

110
00:09:27,190 --> 00:09:30,370
‫基本上是0｡  5%到三厘米｡

111
00:09:30,370 --> 00:09:35,230
‫这就足够了, 在你的游戏过程中, 这些平台可能已经漂移｡

112
00:09:35,230 --> 00:09:39,250
‫我们已经对此实施了修复, 这很好｡

113
00:09:39,280 --> 00:09:39,760
‫好东西｡

114
00:09:39,760 --> 00:09:45,880
‫希望现在你有了另一个工具, 可以尝试找出代码中的内容｡

115
00:09:45,880 --> 00:09:53,020
‫稍后, 当你对自己编写代码更有信心的时候, 试着找出哪里不太好｡

116
00:09:53,470 --> 00:09:56,020
‫好的, 我们下节课见｡

