Unity音频控制(暂停停止播放)

Posted Akuyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity音频控制(暂停停止播放)相关的知识,希望对你有一定的参考价值。

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键,音乐继续播放

       

   

注明:所有音乐文档需要放到属性面板中合适的位置。
————————————————
版权声明:本文为CSDN博主「qq_42610450」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42610450/article/details/106899662

以上是关于Unity音频控制(暂停停止播放)的主要内容,如果未能解决你的问题,请参考以下文章

unity 音乐怎么用代码控制,我在主相机上加了audio source原来有audio listener的,没法暂停和停止

Unity SKFramework框架Audio音频管理器

UnityWwise具体某一音频的暂停恢复和终止播放

Unity 视频控制暂停播放以及滑动条拖拽(笔记)

UnityAudio Source组件——用代码动态控制音效的播放暂停

如何在播放/暂停控制功能中停止无限循环