此处算是一个比较综合性的实例,可以根据AudioSource. Volume来控制声音音量的大小。
问题描述:控制背景音乐的播放、暂停、停止,以及背景音乐的音量大小、是否有背景音乐;控制按键音效是否开启、以及在播放背景音乐同时播放其他音效等。
解决方案:
1. 准备3个声音文件,分别作为背景音乐、按键声音、额外音效;
2. 将下述代码SoundPlay3添加至主摄像机上;
3. SoundPlay3代码如下:
using UnityEngine;
using System.Collections;
public class SoundPlay3 : MonoBehaviour {
//将准备好的MP3格式的背景声音文件拖入此处
public AudioClip backgroundMusic;
//将准备好的MP3格式的音效文件拖入此处
public AudioClip palyOnceSound;
//按钮音效
public AudioClip buttonSound;
//用于控制声音的AudioSource组件
private AudioSource _audioSource;
//是否播放游戏背景音乐
private bool isPlayMusic;
//是否播放按键音效
private bool isPlayButtonSound;
void Awake()
{
//在添加此脚本的对象中添加AudioSource组件,此处为摄像机
_audioSource = this.gameObject.AddComponent<AudioSource>();
//设置循环播放
_audioSource.loop = true;
//设置音量为最大,区间在0-1之间
_audioSource.volume = 1.0f;
//设置audioClip
_audioSource.clip = backgroundMusic;
}
void Update()
{
//如果isPlayMusic为false,则暂停播放背景音乐
if (isPlayMusic == false) _audioSource.Pause();
}
void OnGUI()
{
//绘制播放按钮并设置其点击后的处理
if (GUI.Button(new Rect(10, 10, 80, 30), "Play"))
{
//播放声音
if (isPlayMusic) _audioSource.Play();
AddBtnSound();
}
//绘制暂停按钮并设置其点击后的处理
if (GUI.Button(new Rect(10, 50, 80, 30), "Pause"))
{
//暂停声音,暂停后再播放,则声音为继续播放
_audioSource.Pause();
AddBtnSound();
}
//绘制停止按钮并设置其点击后的处理
if (GUI.Button(new Rect(10, 90, 80, 30), "Stop"))
{
//停止播放,停止后再播放,则声音为从头播放
_audioSource.Stop();
AddBtnSound();
}
//绘制添加音效按钮,PlayOnShot方式添加音效
if (GUI.Button(new Rect(100, 10, 150, 30),"AddSound_Method_1"))
{
_audioSource.PlayOneShot(palyOnceSound);
AddBtnSound();
}
//绘制添加音效按钮,PlayClipAtPoint方式添加音效
if (GUI.Button(new Rect(100, 50, 150, 30),"AddSound_Method_2"))
{
AudioSource.PlayClipAtPoint(palyOnceSound,_audioSource.transform.localPosition);
AddBtnSound();
}
//音量控制Label
GUI.Label(new Rect(10,130,100,30),"音量大小调节");
//音量控制slider
_audioSource.volume = GUI.HorizontalSlider(new Rect(120, 130, 100, 20),_audioSource.volume, 0.0f, 1.0f);
//选择是否播放背景音乐
isPlayMusic = GUI.Toggle(new Rect(10,170,100,20),isPlayMusic, "背景音乐");
//选择是否播放按键声音
isPlayButtonSound = GUI.Toggle(newRect(120,170,100,20),isPlayButtonSound,"按钮音效");
}
//添加按键声音
private void AddBtnSound()
{
if (isPlayButtonSound)AudioSource.PlayClipAtPoint(buttonSound,_audioSource.transform.localPosition);
}
}
4. SoundPlay3添加至摄像机后截图如图1所示:
图1
扫描二维码关注公众号,回复:
3792922 查看本文章
5. 运行后Scene中界面截图如图2所示:
图2
6.效果实现。