Unity3D网络游戏实战
上QQ阅读APP看书,第一时间看更新

1.7 声音

一款好游戏自然少不了音乐和音效,Unity3D支持mp3、wav、ogg等多种音频格式。要让游戏的声音生效,必须要有音源和接收器两个组件,一个负责播放声音,另一个负责接收(相当于人的耳朵)。对于3D声音来说,若音源和接收器的位置发生变化,听到的声音也会随之改变。

1.7.1 音源

AudioSource组件是一个音源组件。在场景中依次点击GameObject→CreateEmpty,创建一个空的游戏对象,并给它添加AudioSource组件(通过依次点击Component→ Audio→Audio Source来实现)。然后将声音文件导入项目中,并赋予AudioSource组件的AudioClip属性(如图1-35所示),设置要播放的音乐片段。

图1-35 AudioSource组件

AudioSource组件有很多属性,常用的如表1-7所示。

表1-7 AudioSource的常用属性及说明

1.7.2 接收器

Audio Listener组件即接收器组件。相机默认带有该组件(如图1-36所示),就像耳朵和眼睛都长在头上一样,相机和接收器也是自然地连在一起的。

图1-36 相机上附带的Audio Listener组件

1.7.3 简单播放器

本节以一个只有“开始”和“停止”两个按钮的播放器为例,说明Unity3D中控制声音的方法。首先,创建名为SoundPlayer.cs的文件,在它的OnGUI方法里通过GetComponent获取音源组件audio(OnGUI方法是Unity3D的内置方法,1.8节会介绍),然后在屏幕上绘制“开始”和“停止”两个按钮,并调用audio.Play()和audio.Stop()实现声音的播放和停止,代码如下所示。

    public class SoundPlayer : MonoBehaviour
    {
        void OnGUI()
        {
            AudioSource audio = GetComponent<AudioSource>();
            if (GUI.Button(new Rect(0, 0, 100, 50), "开始")
                audio.Play();
            if (GUI.Button(new Rect(100, 0, 100, 50), "停止"))
                audio.Stop();
        }
    }

将脚本附加到带有音源的游戏物体上,程序的运行效果如图1-37所示。

图1-37 简单的播放器