天天看点

Unity3D中背景音乐和相关音效的添加,背景音乐暂停、停止和播放的设置

AudioSource组件

在摄像头的属性面板中的Audio Listener,如果开启3D音效声音大小是相对于摄像机而言的。

所有游戏设计中都可以使用此方法

设置音乐、音效相关内容步骤:

(1)创建一个空物体Empty命名为Audio

(2)将Audio拖拽至MainCamera上,并且将Audio的坐标改为(0,0,0)

(3)拷入相关的音效

(4)将音效拖拽至Audio物体的Audio Source属性中的AudioClip上

注:勾选了Play On Awake时表明从开始就播放音乐(在没有代码干预的情况下)

Loop则是指循环的意思

(5)音量调节在属性面板的Volume中进行更改。

(6)创建脚本AudioOrange (防止名字重复)完成脚本内容

脚本代码即解析如下:

public class AudioOrange : MonoBehaviour

{

    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip auido2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {

        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

当变量名相同是可以将它们重叠在一起

比如,可将代码改为:public AudioClip audio1,audio2;这样可以节省空间

(7)完成了音乐的放置,现在要将相关音效播放出来,完成代码如下:

  void Update()

    {

        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {

            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {

            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {

        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {

        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

(8)取消AudioClip中的音乐和Loop以及从开始就播放(上方备注)

完整代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioOrange : MonoBehaviour

{

    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip audio2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {

        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

    void Update()

    {

        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {

            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {

            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {

        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {

        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

播放停止暂停

(1)创建一个新的脚本AudioApple,第一仍然是获取Orange组件再进行赋值。

代码如下:

public class AudioApple : MonoBehaviour

{

    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {

        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

(2)将需要的音效重新拖拽至AudioClip中,并且勾选Play On Awake和Loop

完整代码展示:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioApple : MonoBehaviour

{

    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {

        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

    void Update()

    {

        if (Input.GetKeyDown(KeyCode.R))

        {

            Orange.Stop();//当按下R键,音乐停止,点击U时重头开始播放音乐

        }

        if (Input.GetKeyDown(KeyCode.T))

        {

            Orange.Pause();//当按下T键,音乐暂停

        }

        if (Input.GetKeyDown(KeyCode.U))

        {

            Orange.Play();//当按下U键,音乐继续播放

        }

    }

}

注明:所有音乐文档需要放到属性面板中合适的位置。