日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Unity 3D] 使用Audio Mixer分别控制主音量、背景音乐和其他音效

發(fā)布時間:2023/12/29 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Unity 3D] 使用Audio Mixer分别控制主音量、背景音乐和其他音效 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

在游戲中,通常我們需要控制整個游戲的主音量(全局音量),并且單獨控制背景音樂和其他音效(攻擊、爆炸之類)的音量,這時我們可以用Audio Mixer來解決。

如果文章中有哪些地方寫的不對, 歡迎指出。

?

提醒

在這篇教程中我將重新創(chuàng)建一個簡單的工程來給大家演示,并且我當前使用的Unity版本為2018.1.1f1。

本文并非零基礎(chǔ)教程,但是寫了有點太詳細,且有大約30張圖,所以又臭又長...

工程中用到3個音頻文件作為測試,分別為背景音樂、玩家攻擊和敵人爆炸。

?

正文

1、新建工程導(dǎo)入資源

將3個音頻文件放在Audio目錄下:

?

2、創(chuàng)建音量調(diào)節(jié)面板UI

?創(chuàng)建了3個滑動條分別控制主音量、音樂和音效,并且將滑動條的默認值設(shè)為1:

?

3、創(chuàng)建聲音播放源

(1)背景音樂

創(chuàng)建一個空物體(GameObject)來作為背景音樂的載體,改名為Background Music,添加一個Audio Source組件(要使用Audio Mixer控制音量必須要用Audio Source來播放音頻),將背景音樂音頻文件拖到AudioClip中,勾選Loop讓背景音樂循環(huán)播放:

(2)玩家攻擊音效

創(chuàng)建一個空物體改名為Player,添加Audio Source組件,將玩家攻擊音效拖入AudioClip,取消勾選Play On Awake:

?并且添加了一個名為Player的腳本(腳本放在Scripts文件夾下)來模擬玩家攻擊播放攻擊音效,代碼如下:

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Player : MonoBehaviour {private AudioSource audioSource;void Start (){audioSource = GetComponent<AudioSource>();}void Update () {if (Input.GetKeyDown(KeyCode.Q)){audioSource.Play(); // 按下Q鍵播放玩家攻擊音效}} }

(3)敵人爆炸音效

和設(shè)置Player步驟相同,只不過物體和腳本名變成了Enemy,播放按鍵設(shè)為E,拖入敵人爆炸音效,取消勾選Play On Awake:

?

3、創(chuàng)建Audio Mixer

1. 在Audio文件夾下創(chuàng)建Mixers文件夾,右鍵點擊Mixers文件夾 --> Creat --> Audio Mixer:

2. 創(chuàng)建后改名為MasterMixer,我們用這個Audio Mixer來控制全局音量;雙擊打開我們創(chuàng)建的MasterMixer,將打開的窗口拉出來方便我們查看:

3. 接下來我們單擊選擇Groups下的Master,再點擊Groups右邊的 + 添加成員;我們需要創(chuàng)建兩個成員,分別命名為Music和SoundEffect:

4. 我們會發(fā)現(xiàn)MasterMixer下多出了幾個東西

5. 我們要用Music成員來控制背景音樂,所以我們把Music成員拖到Background Music物體的Audio Source組件下的Output中:

6. 然后我們點擊Mixers右邊的 + ,再創(chuàng)建一個名為SoundEffectMixer的Audio Mixer,我們用這個Mixer而來管理玩家攻擊和敵人爆炸音效,并且將這個Mixer也放到Mixers文件夾下,方便管理:

7. 然后我們選擇剛創(chuàng)建的SoundEffectMixer,單擊選擇Master,點擊Groups右邊的 + ,創(chuàng)建兩個成員,分別為PlayerAttack和EnemyExplosion,分別代表玩家攻擊和敵人爆炸音效:

8. 我們再次單擊左鍵選擇SoundEffectMixer,拖到上面的MasterMixer,然后會彈出一個窗口,選擇SoundEffect:

9. 將PlayerAttack成員拖到Player物體的Audio Source組件下的Output中;

將EnemyExplosion成員拖到Enemy物體的Audio Source組件下的Output中:

10. 我們現(xiàn)在看一下Mixer和成員間的層級關(guān)系:

現(xiàn)在我們可以通過MasterMixer下的Master來控制全局主音量,通過Music來控制背景音樂音量,通過SoundEffect來控制玩家攻擊和敵人爆炸音效。

?

4、暴露參數(shù)

我們需要先將Master、Music和SoundEffect的參數(shù)暴露(Expose)出來,這樣我們才可以通過代碼去控制音量:

1. 首先暴露出Master的參數(shù):

2. 然后點擊Exposed Parameters,選擇我們剛暴露出來的Master的參數(shù),按下F2更改名字為MasterVolume:

3. 對Music和SoundEffect進行同樣的操作(1,2步操作),然后我們就有3個暴露出來的參數(shù):

?

5、控制音量

現(xiàn)在我們有了參數(shù)就可以讓我們控制音量了,那么接下來就進行音量的控制:

1. 在Menu Canvas(也可以新建一個空物體,隨意)下新建一個腳本名為AudioManager,代碼如下:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio;public class AudioManager : MonoBehaviour {public AudioMixer audioMixer; // 進行控制的Mixer變量public void SetMasterVolume(float volume) // 控制主音量的函數(shù){audioMixer.SetFloat("MasterVolume", volume);// MasterVolume為我們暴露出來的Master的參數(shù)}public void SetMusicVolume(float volume) // 控制背景音樂音量的函數(shù){audioMixer.SetFloat("MusicVolume", volume);// MusicVolume為我們暴露出來的Music的參數(shù)}public void SetSoundEffectVolume(float volume) // 控制音效音量的函數(shù){audioMixer.SetFloat("SoundEffectVolume", volume);// SoundEffectVolume為我們暴露出來的SoundEffect的參數(shù)} }

2. 將MasterMixer拖到AudioManager腳本上:

3. 然后我們將3個滑動條分別綁定這3個函數(shù):

4. 將3個滑動條都綁定號函數(shù)后,我們就可以通過滑動條來分別控制Master、Music和SoundEffect的值了:


5.?但是現(xiàn)在滑動條只能讓參數(shù)的值在1和0間變化,聲音大小沒有變化,所以我們需要修改滑動條的最小值和最大值來解決;

我們先要測試下聲音的大小區(qū)間,點擊Edit in Play Mode,拖動滑動塊,找出聲音最小和最大的值:

6. 然后我們修改滑動條的最小值和最大值:

7. 全部滑動條都調(diào)整好了之后我們就可以正常調(diào)節(jié)音量的大小了;

(1)主音量控制全局音量(包括了背景音樂和音效)

(2)音樂控制背景音樂

(3)音效控制玩家攻擊和敵人爆炸音效

?

4、結(jié)束語

完結(jié)撒花,累死我了...

總結(jié)

以上是生活随笔為你收集整理的[Unity 3D] 使用Audio Mixer分别控制主音量、背景音乐和其他音效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。