﻿1
00:00:10,570 --> 00:00:11,650
‫欢迎回来｡

2
00:00:11,680 --> 00:00:14,650
‫在本视频中, 我们关注的是播放声音｡

3
00:00:14,890 --> 00:00:18,430
‫我们想在发射炮弹的时候放点声音｡

4
00:00:18,580 --> 00:00:23,380
‫当炮弹击中什么东西, 当我们的一个棋子死了｡

5
00:00:23,590 --> 00:00:25,060
‫所以让我们开始吧｡

6
00:00:25,540 --> 00:00:32,770
‫现在我在艾德中, 如果我进入“资产”文件夹, 我们有一个音频文件夹, 其中有两种不同的声音,

7
00:00:32,770 --> 00:00:38,350
‫当我们的发射物击中某个物体时, 这些声音将很有用｡

8
00:00:38,350 --> 00:00:44,170
‫我们将使用重击声, 当我们的一个卒死亡时, 将使用爆炸音频｡

9
00:00:44,170 --> 00:00:48,520
‫我们还可以在发射炮弹时重复使用砰的一声｡

10
00:00:48,550 --> 00:00:54,590
‫现在我们希望我们的抛射体有两个变量代表这些健全资产｡

11
00:00:54,610 --> 00:01:01,210
‫现在, 在私有部分下面, 我将添加几个变量, 并向前声明这个类｡

12
00:01:01,210 --> 00:01:06,820
‫现在我要用的类是你的声音库, 这是一个指针.

13
00:01:06,820 --> 00:01:09,580
‫现在我把这个叫做发射声｡

14
00:01:09,760 --> 00:01:15,250
‫这将代表我们发射抛射体时播放的声音｡

15
00:01:15,280 --> 00:01:19,570
‫现在, 你的声音基础是一个类, 我们可以使用的声音｡

16
00:01:19,570 --> 00:01:26,650
‫现在, 如果我们将其公开到蓝图, 我们可以使用声音文件夹中的声音资产进行设置｡

17
00:01:26,650 --> 00:01:30,910
‫所以我会给予它一个U属性, 这样我们就可以公开它了｡

18
00:01:30,910 --> 00:01:36,100
‫我会把它编辑在任何地方, 并把它放在战斗的类别｡

19
00:01:36,100 --> 00:01:39,550
‫所以它和其他的战斗变量在一起｡

20
00:01:39,850 --> 00:01:45,460
‫现在, 我想另一个使用声音为基础的变量时, 弹丸击中的东西｡

21
00:01:45,460 --> 00:01:49,090
‫所以这将是另一个基于U音的指针｡

22
00:01:49,090 --> 00:01:55,300
‫我把这个叫做hit sound, 我给予它赋予和launch sound一样的you属性｡

23
00:01:55,300 --> 00:02:03,760
‫注意, 我没有声明你的声音基础, 因为我已经声明了你的声音基础了.

24
00:02:03,760 --> 00:02:10,720
‫因此, 一旦你在一行上向前声明了一个类型, 这个类型就可以在文件中的它之后使用｡

25
00:02:10,720 --> 00:02:16,420
‫因此, 有些人把他们的声明放在最上面｡

26
00:02:16,420 --> 00:02:17,950
‫这是另一种方法｡

27
00:02:17,950 --> 00:02:26,350
‫所以如果我说class, 你在这里发出声音base, 那么这就处理了forward声明, 我可以在forward声明之后的文件中的任何地方使用use

28
00:02:26,350 --> 00:02:32,710
‫sound base类型.

29
00:02:32,710 --> 00:02:34,420
‫所以这是另一种方法｡

30
00:02:34,420 --> 00:02:43,180
‫为了让你们明白这两种方法, 我将在顶部的这一段向前声明你的声音基础, 而不是在下面的这一段向前声明.

31
00:02:43,330 --> 00:02:48,830
‫所以我们现在必须用声音基变量来表示抛射体h｡

32
00:02:48,970 --> 00:02:55,210
‫我想添加一个健全的基地, 以基地兵类, 这将是当基地兵被摧毁｡

33
00:02:55,210 --> 00:02:59,920
‫这是私有的, 我在这里声明它,

34
00:02:59,920 --> 00:03:07,210
‫它是一个you的声音, 基本指针, 我把它叫做death, 它会得到一个you属性.

35
00:03:07,240 --> 00:03:10,780
‫我将向下滚动, 以便您可以更好地查看属性｡

36
00:03:10,810 --> 00:03:12,490
‫它将被添加到任何地方｡

37
00:03:14,240 --> 00:03:16,760
‫我会把这个放在分类里｡

38
00:03:18,350 --> 00:03:19,220
‫战斗｡

39
00:03:19,700 --> 00:03:26,420
‫现在我们的基本变量和投射变量都使用了正确的基本变量, 让我们继续编译这些变量,

40
00:03:26,420 --> 00:03:29,930
‫并在Blueprint中查看这些变量｡

41
00:03:29,930 --> 00:03:35,690
‫当然, 我得到了一个编译错误, 因为我键入你的属性有点太匆忙｡

42
00:03:35,690 --> 00:03:38,420
‫小写的y应该是大写的y｡

43
00:03:38,420 --> 00:03:46,160
‫这些东西是区分大小写的, 所以纠正了错别字并再次编译, 现在我有了一个成功的编译｡

44
00:03:46,160 --> 00:03:52,820
‫现在, 让我们返回编辑器, 我将打开actors文件夹和BP projectile,

45
00:03:52,820 --> 00:03:59,420
‫然后打开完整的蓝图编辑器, 我更喜欢这样做｡

46
00:03:59,420 --> 00:04:02,540
‫这让我更容易看到现在的一切｡

47
00:04:02,540 --> 00:04:09,050
‫我在这里有启动声音和点击声音, 因为这些都是编辑任何地方, 我们可以从下拉菜单中选择声音资产,

48
00:04:09,050 --> 00:04:14,390
‫它只是显示我有有效的选项｡

49
00:04:14,390 --> 00:04:19,400
‫现在我看到的是启动声音, 我将使用砰的一声音频｡

50
00:04:19,700 --> 00:04:23,000
‫现在, 我也将使用“砰”声音频作为热门声音｡

51
00:04:23,000 --> 00:04:24,560
‫但我做了两个变量｡

52
00:04:24,560 --> 00:04:31,010
‫所以如果你得到你的手更多的声音效果, 你可以使用不同的声音为发射与击中的声音｡

53
00:04:31,010 --> 00:04:33,740
‫这是为你准备的, 以防你喜欢这样做｡

54
00:04:33,740 --> 00:04:38,480
‫现在, 这就解决了发射声音和炮弹击中声音｡

55
00:04:38,480 --> 00:04:41,810
‫我将编译, 保存, 然后关闭.

56
00:04:42,080 --> 00:04:46,280
‫接下来, 我要打开池塘, 打开BP池的水箱｡

57
00:04:46,280 --> 00:04:49,250
‫这是我在战斗部分的死亡之声｡

58
00:04:49,490 --> 00:04:57,230
‫我将单击下拉菜单并使用“爆炸音频”, 然后将“死亡声音”设置为爆炸音频声音资源｡

59
00:04:57,260 --> 00:05:04,370
‫我将编译并保存该变量, 然后关闭BP pond tank并打开BP pond

60
00:05:04,370 --> 00:05:09,320
‫turret, 因为我们将该变量放在了基本pond类上, 而turret也是从该基类继承的｡

61
00:05:09,320 --> 00:05:13,940
‫所以我也要把死亡之音设置为爆炸音频｡

62
00:05:13,940 --> 00:05:21,200
‫所以现在我们有了健全的资产, 它们以变量的形式存储在我们的池塘和抛射体上｡

63
00:05:21,200 --> 00:05:24,530
‫剩下的就是真正播放这些声音｡

64
00:05:24,860 --> 00:05:28,550
‫现在你的游戏玩静态有另一个有用的功能｡

65
00:05:28,550 --> 00:05:31,310
‫这叫做在现场播放声音｡

66
00:05:31,310 --> 00:05:37,370
‫现在我们可以向下滚动, 看到它需要很多输入参数, 但与大多数函数一样,

67
00:05:37,370 --> 00:05:42,590
‫也有很多可选参数具有默认值｡

68
00:05:42,770 --> 00:05:45,680
‫所以我们可以深入到代码中来看看这个｡

69
00:05:45,950 --> 00:05:51,410
‫所以我将跳到投射CP和这里开始播放｡

70
00:05:51,410 --> 00:06:02,750
‫我将输入游戏静态信息, 在位置播放声音, 然后点击左括号, 我会看到它说两个之一｡

71
00:06:03,020 --> 00:06:07,460
‫现在它展示的第一个版本有一个世界上下文对象｡

72
00:06:07,460 --> 00:06:09,830
‫我们知道我们可以用这个来换那个｡

73
00:06:09,830 --> 00:06:12,110
‫接下来需要使用声音底座｡

74
00:06:12,110 --> 00:06:17,810
‫所以我们有了sound基变量, 接下来它用一个F向量来表示位置｡

75
00:06:17,810 --> 00:06:23,360
‫现在, 如果我们想在投射物的位置播放声音, 我们可以只使用get actor location,

76
00:06:23,360 --> 00:06:26,060
‫其余的输入都是可选的｡

77
00:06:26,060 --> 00:06:33,830
‫因此, 如果您想了解这些, 请再次查看此函数的文档页面, 并进行更多研究｡

78
00:06:33,830 --> 00:06:40,970
‫但我们只关心前三个输入, 所以我们知道如何在我们可以使用的位置播放声音｡

79
00:06:40,970 --> 00:06:47,870
‫游戏静态在位置播放声音, 这需要一个世界背景对象, 一个声音,

80
00:06:47,870 --> 00:06:54,110
‫我们可以使用我们的使用声音基础和一个位置, 我们可以使用获得演员位置｡

81
00:06:54,110 --> 00:07:02,360
‫因此, 您的挑战将是调用播放声音的位置和播放声音的各个方面, 我们的游戏需要的声音｡

82
00:07:02,360 --> 00:07:12,500
‫所以叫你游戏静态播放声音在位置在抛射类第一次在击中功能和使用我们的击中声音变量｡

83
00:07:12,530 --> 00:07:20,840
‫当我们检查其他参与者是否有效时, 在if检查中执行此操作, 并确保其他参与者不是this或所有者｡

84
00:07:20,840 --> 00:07:27,020
‫但是在我们摧毁炮弹之前调用它, 在位置调用播放声音, 开始播放炮弹,

85
00:07:27,020 --> 00:07:29,630
‫使用发射声音｡

86
00:07:29,630 --> 00:07:36,650
‫这样我们就可以在抛射体产生的时候播放声音, 以及在抛射体击中下一个物体的时候播放声音｡

87
00:07:36,650 --> 00:07:42,110
‫进入基础乒乓类和调用播放声音的位置和处理破坏｡

88
00:07:42,110 --> 00:07:43,730
‫你要用死亡之音｡

89
00:07:43,730 --> 00:07:45,110
‫那就是爆炸｡

90
00:07:45,110 --> 00:07:50,000
‫所以暂停视频, 并添加这些通话, 以播放声音的位置现在｡

91
00:07:53,530 --> 00:07:53,800
‫好吧, 我会的

92
00:07:53,830 --> 00:07:59,470
‫首先, 我们来到了Projectile CP, 我将按照挑战的顺序进行介绍｡

93
00:07:59,470 --> 00:08:04,290
‫首先我将转到on hit并在这里播放声音｡

94
00:08:04,300 --> 00:08:11,440
‫现在您可能检查了声音是否为空, 如果是, 我给予表扬您,

95
00:08:11,440 --> 00:08:14,100
‫因为您已经养成了良好的编程习惯｡

96
00:08:14,110 --> 00:08:16,120
‫如果你没有, 也没关系｡

97
00:08:16,150 --> 00:08:16,990
‫来吧, 做吧｡

98
00:08:16,990 --> 00:08:17,290
‫现在就去

99
00:08:17,290 --> 00:08:24,550
‫在调用新的游戏静态函数之前, 我们将检查命中声音是否有效｡

100
00:08:24,550 --> 00:08:25,450
‫所以就是你了｡

101
00:08:25,450 --> 00:08:32,650
‫游戏静态播放声音的位置, 我们首先需要一个世界背景对象, 这将是｡

102
00:08:32,650 --> 00:08:37,660
‫接下来, 我们需要播放的声音本身, 我们将在演员的位置播放｡

103
00:08:37,660 --> 00:08:42,670
‫因此获得演员位置将满足第三个参数｡

104
00:08:43,090 --> 00:08:44,260
‫好的, 很好｡

105
00:08:44,260 --> 00:08:47,170
‫接下来, 我们需要播放声音并开始播放｡

106
00:08:47,170 --> 00:08:49,000
‫让我们回到上面开始游戏｡

107
00:08:49,000 --> 00:08:54,010
‫对于这一个, 我们将检查启动声音是否有效｡

108
00:08:54,010 --> 00:09:04,030
‫所以我们会说, 如果启动声音, 你在游戏中, 静态播放声音, 在位置播放声音, 当然我们需要世界上下文对象｡

109
00:09:04,030 --> 00:09:10,570
‫这就是使用的声音基础, 将是启动声音, 我们将在演员位置播放｡

110
00:09:10,570 --> 00:09:17,140
‫因此, 获得演员的位置, 这就需要播放声音, 并开始播放｡

111
00:09:17,140 --> 00:09:23,830
‫所以最后要做的就是播放基础类上的声音和处理销毁｡

112
00:09:23,830 --> 00:09:30,100
‫现在我们正在处理视觉和声音效果, 我们不需要在这里说要做什么, 因为我们已经做了｡

113
00:09:30,100 --> 00:09:34,120
‫首先, 我们要检查死亡声音是否有效｡

114
00:09:34,120 --> 00:09:41,380
‫如果是, 那么我们可以称你为游戏静态播放声音在位置与世界背景对象｡

115
00:09:41,380 --> 00:09:52,330
‫这就是声音的基础, 这就是死亡之音, 演员的位置将满足死亡之音的位置.

116
00:09:52,450 --> 00:09:53,770
‫太棒了｡

117
00:09:53,770 --> 00:09:58,570
‫让我们继续, 用一个成功的编译来编译我们的代码｡

118
00:09:58,600 --> 00:10:02,200
‫我们将跳回到编辑器中, 来测试一下.

119
00:10:02,200 --> 00:10:05,590
‫所以我要按播放键, 等待计时器｡

120
00:10:14,030 --> 00:10:16,930
‫总而言之, 我们现在有了声音｡

121
00:10:16,940 --> 00:10:24,560
‫我们在播放一个声音, 为炮弹击中和发射, 我们在播放一个声音, 为卒死亡｡

122
00:10:24,830 --> 00:10:30,560
‫回顾一下我们的分区计划, 我们发现我们已经检查了这里的每一个项目｡

123
00:10:30,560 --> 00:10:34,610
‫我们还在做特效我们有烟雾, 爆炸和声音.

124
00:10:34,610 --> 00:10:40,850
‫在我们结束这一部分之前, 还有一些事情要做, 以完善这个游戏,

125
00:10:40,850 --> 00:10:43,730
‫并确保它的外观和感觉是正确的｡

126
00:10:43,730 --> 00:10:46,580
‫所以我们在下一个视频中再见｡

