SEとBGMの音量ONOFFボタンを作る
TASK DESTRUCTIONをスマホゲームっぽくするため、SEとBGMの音量をプレイヤーが操作出来るようにしようと思います。
音声のONOFFの流れ
見た目はすでに作っています。
タイトルで設定画面(panel)を開いた状態です。
BGMとSEの横のスピーカーマークを押して、音量をONにするかOFFにするか切り替えたいと思います。
OFFの時はスピーカーマークに斜線を追加します。
実際に出来るようにする
下準備
Unityでのオプション画面作成メモ - ロードバイク時々ものづくり
こちらのサイトでAudio Sourceをグループに振り分けることが出来ると判明。
具体的なやり方はこちらを参考にしました。
Unityのオーディオミキサーを使って音声の変換や音量を変更する | Unityを使った3Dゲームの作り方(かめくめ)
まずはAseetsフォルダ内でAudioMixerを作っておきます。
名前はAudioMixersにしました。
そしてグループを作成するため、window→Audio→AudioMixerを開きます。
開くとこんな画面が出ます。(もし埋まっていたらAudioMixerと書いている上のタブをドラッグして、また埋まらないように気を付けながら外に出すとやりやすいです)
グループを作成する時はGroupsの横にある+マークを押します。Masterを選択してからBGM,SEグループを作ります。
あと、忘れてはいけないことがあります。
AseetsからAudioMixers→BGMとSE、のインスペクタの上で右クリックをして、画像の通り選択してください。
これをしておかないとスクリプトで値を変更できないので、困ります。
それからAudioMixerウィンドウに戻ってきて、右上にあるExposed Parametersを押します。
変数名として名前をつけておきます。ここでは、"BGM"と"SE"にしました。
あとはAudioSourceにグループを追加するだけです。
全てのAudioSourceのOutputにBGMかSEグループを入れて下準備完了です。
実際にONOFF出来るようにする(コード)
先にコードを載せておきます。
実際にONOFF出来るようにする(解説)
流れとしては、
- ゲーム起動時に音量の設定をロードし、反映する(start関数)
- 歯車を押すとオプション画面起動。ここで音量ONOFFできる(ここは記載なし)
- ミュートされてたらスピーカーボタンに斜線いれる(ここは記載なし)
- スピーカーボタンクリックでmixer.SetFloatいちいち変更(BGMsoundSwitch関数,SEsoundSwitch関数)
- オプション画面閉じる時にplayerprefs(BGMvolume,SEvolume)に音量設定セーブ(settingspanelCancel関数)
mixer.SetFloat
とPlayerPrefs.SetFloat
とかを間違えなければ上手くいくはずです。
あと、ONOFFする時に出てきた0とか-80は音量のMax(0)とMin(-80)です。
こちらのサイトを見て参考にしました。
Unity5で脱オレオレAudioManager - Qiita
これでプレイヤーが自由に音量設定が出来るようになりました!