﻿1
00:00:04,430 --> 00:00:05,360
‫你好, 欢迎｡

2
00:00:05,360 --> 00:00:10,820
‫在这堂课中, 我们将学习一个叫做世界对象的东西, 在虚幻中一个非常重要的对象｡

3
00:00:10,820 --> 00:00:18,500
‫我会看看我们如何从这个对象中得到游戏的当前时间, 并在课程结束前把它打印到控制台上｡

4
00:00:18,500 --> 00:00:20,690
‫让我们深入了解一下这是如何工作的｡

5
00:00:21,230 --> 00:00:28,280
‫所以为了能够做线追踪器或扫描, 我们需要理解另一个概念, 另一种存在于虚幻土地上的物体,

6
00:00:28,280 --> 00:00:34,550
‫而那个物体就是世界｡

7
00:00:34,550 --> 00:00:37,640
‫我们已经讨论了很多关于水平的问题｡

8
00:00:37,640 --> 00:00:41,540
‫因此, 如果我们转到内容绘制, 我们也处理了地图｡

9
00:00:41,540 --> 00:00:46,790
‫所以地图和关卡是同义词｡

10
00:00:46,790 --> 00:00:51,050
‫然而, 一个世界在一开始就存在｡

11
00:00:51,050 --> 00:01:01,940
‫一开始是新世界, 新世界是一种类型, 基本上是我们玩游戏时看到的环境.

12
00:01:02,300 --> 00:01:05,360
‫但这不一定只是一个层次｡

13
00:01:05,360 --> 00:01:12,830
‫在C++中, 你可以加载一个叫做you level的级别, 它是一个参与者的集合,

14
00:01:12,830 --> 00:01:14,750
‫我们应该把它带进新的世界｡

15
00:01:14,750 --> 00:01:19,730
‫所以你可以加载一个级别到你的世界, 但不一定只是一个级别｡

16
00:01:19,730 --> 00:01:23,510
‫您可以在多个级别加载到一个世界｡

17
00:01:23,510 --> 00:01:28,280
‫这是因为我们通常有这些流级别, 我们有非常大的级别, 我们不想加载所有东西,

18
00:01:28,280 --> 00:01:32,510
‫每个演员到一个级别, 为了性能的原因｡

19
00:01:32,510 --> 00:01:39,860
‫所以我们把它分成了多个层次, 这样我们就可以根据需要只引入场景的一部分｡

20
00:01:39,860 --> 00:01:44,780
‫如果我们看一下New

21
00:01:44,780 --> 00:01:52,820
‫World上的文档页面, 我认为它相当简洁地描述了世界是一个顶级对象, 表示一个地图或沙箱, 其中存在并呈现了参与者和组件｡

22
00:01:52,820 --> 00:01:57,500
‫如果你再往下看一点,

23
00:01:57,500 --> 00:02:07,730
‫它说世界可以是一个单一的持久级别, 基本上意味着一个级别将一直在那里, 或者潜在的一个可选的流级别列表, 或者基本上可以随时加载的级别｡

24
00:02:08,150 --> 00:02:10,850
‫为什么这些有意思呢？

25
00:02:10,910 --> 00:02:14,600
‫这很有趣, 因为它可以让我们进行直线追踪｡

26
00:02:14,600 --> 00:02:28,340
‫如果我们在文档中搜索线路跟踪, 您会发现这里有很多功能, 尤其是我们最感兴趣的功能是按通道进行单次线路跟踪或按通道进行多次线路跟踪,

27
00:02:28,340 --> 00:02:39,170
‫这两种功能基本上允许我们分别获取线路跟踪命中的第一个对象或所有对象｡

28
00:02:39,320 --> 00:02:45,350
‫你可以看到参数列表, 特别是如果我看一下行跟踪单,

29
00:02:45,350 --> 00:02:52,520
‫参数列表有开始, 有结束, 有一个跟踪通道｡

30
00:02:52,520 --> 00:02:59,570
‫它实际上在参数列表中给出了一个结果, 这有点奇怪, 我们稍后会讲到｡

31
00:02:59,960 --> 00:03:02,000
‫但不管怎么说, 这是线迹｡

32
00:03:02,000 --> 00:03:05,570
‫我们也有能力做一次扫荡｡

33
00:03:05,570 --> 00:03:09,980
‫因此, 如果我们搜索sweep, 您可以看到存在一个sweep多bi通道｡

34
00:03:10,010 --> 00:03:12,620
‫还有一个按频道扫描单｡

35
00:03:12,620 --> 00:03:20,690
‫这里除了开始和结束, 还有一个collision, f, collision, shape类型, 你可以传入｡

36
00:03:20,690 --> 00:03:26,900
‫基本上,

37
00:03:26,900 --> 00:03:36,440
‫如果我们点击F碰撞形状, 你可以在Unreal中的文档中阅读更多关于它的内容, 你可以看到F碰撞形状基本上支持球体胶囊框或直线｡

38
00:03:36,440 --> 00:03:43,880
‫所以我们将在这个例子中使用这个球体, 稍后我们会看到如何构造这些｡

39
00:03:43,880 --> 00:03:48,530
‫但是你可以看到为什么我们想要掌握这个新世界, 为什么它对我们很重要｡

40
00:03:48,530 --> 00:03:52,550
‫但问题是我们如何掌握新世界？

41
00:03:52,550 --> 00:03:55,490
‫一旦我们掌握了它, 我们如何使用它？

42
00:03:55,850 --> 00:03:59,360
‫好吧, 让我们来看看Visual Studio代码｡

43
00:03:59,990 --> 00:04:06,710
‫在每个组件和每个执行元上, 都有一个名为“获取世界”的函数｡

44
00:04:06,890 --> 00:04:12,800
‫如果你输入get world, 然后输入括号, 这将返回一个类型为U world的对象｡

45
00:04:12,800 --> 00:04:16,070
‫实际上, 是指向new world类型的对象的指针｡

46
00:04:16,070 --> 00:04:17,090
‫所以我们把它存起来｡

47
00:04:17,090 --> 00:04:23,690
‫我们有一个新世界的指针, 我们就叫它世界, 好吗？

48
00:04:23,870 --> 00:04:25,700
‫而那就等于得到了世界｡

49
00:04:25,700 --> 00:04:28,550
‫然后我们可以在最后放一个分号｡

50
00:04:28,550 --> 00:04:34,550
‫现在, 为了真正掌握这个世界上的任何东西, 我们将使用箭头运算符｡

51
00:04:34,550 --> 00:04:41,300
‫所以我们要画一个世界箭头, 然后我们就可以去看看这个世界的一些细节｡

52
00:04:41,300 --> 00:04:47,330
‫但是在我们这样做之前, 我们需要包括它的头文件, 因为否则这个C++文件,

53
00:04:47,330 --> 00:04:52,580
‫当编译器到达它的时候, 将不知道在一个新的世界类型中包括了什么｡

54
00:04:52,580 --> 00:04:55,700
‫它没有任何关于新世界的信息｡

55
00:04:55,850 --> 00:04:59,990
‫因此, 为了解决这个问题, 我们需要查看新世界的文档｡

56
00:04:59,990 --> 00:05:03,470
‫滚动到顶部, 寻找它所在的位置｡

57
00:05:03,570 --> 00:05:10,530
‫这里写着include, 这就给出了我们需要用到的include, 你可以看到, 引用引擎, 福特,

58
00:05:10,530 --> 00:05:18,990
‫斜线, 世界, 这就是我们需要的, 所以我们把它放在这里, 现在, 我抓住一个H,

59
00:05:18,990 --> 00:05:23,670
‫如果我们点击控制空间, 我们应该得到一个列表, 我们可以对这个特定的世界做什么｡

60
00:05:23,670 --> 00:05:26,400
‫我们有很多这样的人｡

61
00:05:26,400 --> 00:05:34,770
‫很明显, 我们可以找到我们的线迹, 我们可以找到我们的扫掠通过多个或单个｡

62
00:05:34,770 --> 00:05:38,070
‫所以我想挑战你打印时间间隔｡

63
00:05:38,070 --> 00:05:42,030
‫这是“新世界”对象上可用的属性｡

64
00:05:42,060 --> 00:05:48,060
‫你可以在本课的相关文档中找到time seconds属性,

65
00:05:48,060 --> 00:05:53,010
‫并将其存储在一个适当类型的变量中｡

66
00:05:53,010 --> 00:06:01,260
‫同样, 查看文档将告诉您类型应该是什么, 然后使用适当的格式再次将其记录到控制台｡

67
00:06:01,260 --> 00:06:03,900
‫指定暂停视频并开始播放｡

68
00:06:07,350 --> 00:06:08,340
‫好的欢迎回来

69
00:06:08,340 --> 00:06:13,890
‫我们将在中使用它, 如果我在新世界文档中搜索时间,

70
00:06:13,890 --> 00:06:17,790
‫你可以看到有一个叫做时间秒的浮点数｡

71
00:06:17,790 --> 00:06:21,360
‫这就是我想要的, 在这种情况下, 这是游戏时间｡

72
00:06:21,360 --> 00:06:26,040
‫所以如果你减慢或加快时间, 这个也会减慢或加快｡

73
00:06:26,040 --> 00:06:29,280
‫但也有不受影响的｡

74
00:06:29,580 --> 00:06:30,480
‫有不同的｡

75
00:06:30,480 --> 00:06:33,570
‫你有时间, 秒, 不停顿的时间, 秒｡

76
00:06:33,570 --> 00:06:38,700
‫还有真实的秒数, 它不会以任何方式暂停或更改｡

77
00:06:38,910 --> 00:06:40,590
‫所以我对时间秒感兴趣｡

78
00:06:40,590 --> 00:06:43,710
‫我们用哪一个并不重要, 因为它们都是浮点数｡

79
00:06:43,710 --> 00:06:48,360
‫我将创建一个名为Time的浮点数并存储世界箭头时间｡

80
00:06:48,360 --> 00:06:53,940
‫我们不需要把世界变成它自己的变量｡

81
00:06:53,940 --> 00:06:56,790
‫它很短, 可以调用get world｡

82
00:06:56,790 --> 00:06:57,960
‫这就是我们通常做的｡

83
00:06:57,960 --> 00:07:01,590
‫会做得到世界然后箭头时间秒像｡

84
00:07:01,590 --> 00:07:12,420
‫现在我们可以做一个日志, 我们要说的是当前时间, 然后我们要做一个百分比F,

85
00:07:12,420 --> 00:07:19,790
‫因为我们在这里打印出一个浮点数, 然后我们可以给予时间作为日志的输入｡

86
00:07:19,800 --> 00:07:28,440
‫现在, 让我们将alt f 11控制为实时代码, 然后打开并停靠输出日志｡

87
00:07:29,760 --> 00:07:31,620
‫按播放键｡

88
00:07:32,670 --> 00:07:40,860
‫在这里你可以看到我们有一个当前时间, 它是以秒为单位的, 随着时间的流逝, 在我们的博弈中是这样的｡

89
00:07:40,860 --> 00:07:47,580
‫如果我们真的按了暂停键, 你会注意到时间停止了, 如果我们按了播放,

90
00:07:47,580 --> 00:07:50,310
‫它就会从我们原来的地方恢复｡

91
00:07:50,610 --> 00:07:51,150
‫他想｡

92
00:07:51,150 --> 00:07:56,130
‫您可以尝试使用真实的秒数, 看看是否会出现这种效果｡

93
00:07:56,220 --> 00:07:57,690
‫但我不打算在这里｡

94
00:07:57,690 --> 00:08:03,600
‫我们已经展示了我们可以得到这个新的世界对象, 这个我们当前所在的世界对象,

95
00:08:03,600 --> 00:08:07,980
‫我们可以用箭头从它那里得到属性｡

96
00:08:07,980 --> 00:08:11,580
‫操作员拍拍你的背, 我们下节课再见.

