![Unity 3D\2D手机游戏开发:从学习到产品(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/490/26943490/b_26943490.jpg)
2.8 声音与特效
现在的游戏是无声的,我们将添加几个简单的音效,并增加一个爆炸效果。
步骤 01 在Project窗口中单击鼠标右键,选择【Import Package】→【Custom Package】,然后到资源文件目录rawdata\packages浏览Unity包文件,选择ShootingFX.unitypackage,将其打开,选择【Import】导入到当前工程中,如图2-34所示。在这个包中包含了几个音效文件和一个爆炸特效Prefab,它们都会被导入到Assets目录的FX文件夹中。
![](https://epubservercos.yuewen.com/6A4FC9/15367245604191906/epubprivate/OEBPS/Images/figure_0055_0003.jpg?sign=1738959247-zoiCiOR1hrcOJ2HKsIF0HiEpNmHuB8hg-0-9ad69004bc28eec55b7495a74a7c35db)
图2-34 导入音效素材
.unitypackage文件是Unity专用的资源包,在Project窗口中选择资源,如脚本、模型、声音等,然后单击鼠标右键并选择【Export Package】,可以将所选资源导出为.unitypackage格式的包,然后重用到其他Unity工程中。
步骤 02 选择主角飞船游戏体,在菜单栏中选择【Component】→【Audio】→【Audio Source】,为主角添加一个Audio Source组件,凡是需要发声的游戏体,必须有这个组件。
步骤 03 打开Player.cs脚本,添加并修改代码如下:
public AudioClip m_shootClip; // 声音 protected AudioSource m_audio; // 声音源 public Transform m_explosionFX; // 爆炸特效 void Start () { m_transform = this.transform; m_audio = this.GetComponent<AudioSource>(); }
① m_shootClip属性是射击的声音,在后面会将它和音效文件关联。
② m_audio属性是声音源组件,用于播放声音,在Start函数中将其指向实际的声音源组件。
步骤 04 在Player.cs脚本的Update函数中添加播放声音的代码:
if ( Input.GetKey( KeyCode.Space ) || Input.GetMouseButton(0) ) { Instantiate( m_rocket, m_transform.position, m_transform.rotation ); // 添加代码,播放射击声音 m_audio.PlayOneShot(m_shootClip); }
步骤 05 在Player.cs脚本的OnTriggerEnter函数中添加创建爆炸特效的代码:
if (m_life <= 0) { //添加代码,当生命值为0后,播放爆炸特效 Instantiate(m_explosionFX, m_transform.position, Quaternion.identity); Destroy(this.gameObject); // 自我销毁 }
步骤 06 选择主角游戏体,在Project窗口的FX文件夹下分别找到shoot.WAV音效文件和Explosion.prefab爆炸特效文件,在Player组件中将其分别与m_shootClip和m_explosionFX属性关联,如图2-35所示。
![](https://epubservercos.yuewen.com/6A4FC9/15367245604191906/epubprivate/OEBPS/Images/figure_0056_0009.jpg?sign=1738959247-0n4VTcHrvmZOWXmq6iKs42WEp4ohtzgR-0-e6cbb79d58b8b76461b6f72b69e5601a)
图2-35 关联爆炸
步骤 07 选择爆炸特效的Prefab,为其添加一个Audio Source组件,然后在导入的FX文件夹下找到explosion.WAV文件,将其指定到Audio Source的Audio Clip中。因为默认【Play On Awake】复选框是处于选中状态,所以当爆炸特效被实例化后,会自动播放爆炸的声音。【Spatial Blend】的值默认为0,表示音效为2D音效,不会受空间环境影响,如果将其设为1,音效则变为3D音效,如图2-36所示。
![](https://epubservercos.yuewen.com/6A4FC9/15367245604191906/epubprivate/OEBPS/Images/figure_0057_0001.jpg?sign=1738959247-ATeBqnOojcUkxK72P5ZZEBHKVhbNrOat-0-716c8c1336d653da67261e27a769d72d)
图2-36 添加爆炸声音
运行游戏,可以听到射击声音,当主角死亡,会看到爆炸效果,如图2-37所示,并能听到爆炸声音。我们也需要为敌人添加同样的爆炸效果和声音,重复前面的步骤即可,这里就不再赘述。
![](https://epubservercos.yuewen.com/6A4FC9/15367245604191906/epubprivate/OEBPS/Images/figure_0057_0002.jpg?sign=1738959247-jchZhgv6DvfqaBgQxjogqDKjg5F2Xozw-0-def6da2caef03fd40b28d42fa2ccbb0b)
图2-37 爆炸效果