【Unity快速实现小功能】声音控制三部曲之(三)—— 声音、音效开关以及音量大小控制

此处算是一个比较综合性的实例,可以根据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

5.      运行后Scene中界面截图如图2所示:


       

                    图2

6.效果实现。

猜你喜欢

转载自blog.csdn.net/Winner_2012/article/details/46558589