unity3D AudioMixer+Slider實現音量調節,多音效控制(主音量,背景音,特效音等)


說明:

目標:在游戲設置面板中調節多個種類的音效音量

①創建AudioMixer並配置

Assets右鍵Create→AudioMixer修改名稱,例如AudioSetting

雙擊打開創建好的AudioSetting,打開是這樣的面板,默認帶一個Groups叫Master

我們希望能調節主音量,背景音,特效音三種,目前只有一個音軌,並不符合我們的要求,

需要新增兩條音軌,比如叫背景音和特效音,點擊Master后點右側+加號新增音軌

 創建好了之后,並不能直接在代碼里控制他們,因為需要將它們暴露出去,暴露出去后才能在代碼控制

下圖中第二步選擇以下英文

 我們需要將這三個依次重復上面的步驟,選中,暴露為代碼,修改名稱,請記住名稱(大小寫有區別),代碼中要用

當然,如果只需要控制一個主音量,請忽視新增的背景音和特效音

這里,為了好理解,我將這三個分別設置為Main,Bgm,Texiao

 

②將音效片段中OutPut 指定音軌

我們需要將Audio Source下的OutPut選中對應的音軌,

例如這個音效是背景音,就選中Bgm音軌,特效音就選中Texiao音軌

③將 AudioMixer和Slider建立連接

到了關鍵的一步,將以下代碼掛在到畫布上

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.Audio;
 5 using UnityEngine.UI;
 6 
 7 public class CanvasSitting : MonoBehaviour
 8 {
 9     public Slider slider;               //滑動條
10     public AudioMixer audioMixer; //聲音混合器
11 
12     //控制主音量
13     public void ControlMainVolume(float v)
14     {
15         audioMixer.SetFloat("Main", v);
16     }
17     //控制背景音量
18     public void ControlBgmVolume(float v)
19     {
20         audioMixer.SetFloat("Bgm",v);
21     }
22     //控制特效音量
23     public void ControlTexiaoVolume(float v)
24     {
25         audioMixer.SetFloat("Texiao", v);
26     }
27 }

然后把滑動條和創建好的AudioMixer拖入代碼公開變量中

請忽視滑動條和AudiMixer以外的變量

④配置Slider,並添加事件

此時需要更改三個Slider中的value值

將Min Value 設置為-80,這個值並不是固定的,可以手動微調,代表音量最小值

將Max Vlue 設置為0,這個代表音量最大值,也可手動調試

給三個滑動條分別添加對應的事件函數

點加號,將畫布拖入,選擇我們掛載在畫布上代碼,代碼中有三個函數來分別控制着三個音量

注意會出現上下兩個一樣的名稱,請選擇Dynamic float下面的函數名稱

到這里,完成了所有操作,請進入游戲試試音量調節吧.

補充:

當主音量沒有聲音時,其他的音量就算拉滿也是沒有聲音的

拖動沒效果,記得看一下音效OutPut是否選擇了音軌

⑤實現效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM