說明:
目標:在游戲設置面板中調節多個種類的音效音量
①創建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是否選擇了音軌
⑤實現效果