(この記事の使用環境: Unity 2018.1.0b9 Personal、Visual Studio Community 2017, Windows10)
unityroom などで公開されているゲームをプレイしていて、「音量調整したい!」と思ったことはありませんか?ありますよね!私のPC環境はスピーカー音量を最小まで絞ってもけっこう大きな音が出てしまうので、ソフト側での音量調整機能が必須に近いのです。
でも開発者視点からだと、簡易なフリゲでいちいち音量調整用のUIを付けたりするのは面倒ですよね。そのためだけにメニュー画面とかポーズ画面を付けようかなとか考え出すとキリがないですしおすし(古語)。
というわけでシンプルなやつを作ってみました。設定したキーでゲームプレイ中いつでも音量の上げ下げができます。
シンプルなボリューム調整機能が欲しかったので作ってみた
キーボードのキー操作でAudioMixerのマスターボリュームを上げ下げできるようにする、シンプルなスクリプトを作ってみたので紹介します。unityroom などで公開されているゲームをプレイしていて、「音量調整したい!」と思ったことはありませんか?ありますよね!私のPC環境はスピーカー音量を最小まで絞ってもけっこう大きな音が出てしまうので、ソフト側での音量調整機能が必須に近いのです。
でも開発者視点からだと、簡易なフリゲでいちいち音量調整用のUIを付けたりするのは面倒ですよね。そのためだけにメニュー画面とかポーズ画面を付けようかなとか考え出すとキリがないですしおすし(古語)。
というわけでシンプルなやつを作ってみました。設定したキーでゲームプレイ中いつでも音量の上げ下げができます。
これです
スクリプトはこんな感じ。
AudioMixer、AudioSourceの設定をしたうえで、このスクリプトを適当なオブジェクトにアタッチし、インスペクターの各項目を設定して使ってください。
参考:Unity5で脱オレオレAudioManager - Qiita
不明点などあればご連絡ください。
今回は以上です。// AudioVolumeControlByKey.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; ///<summary> ///キーボード操作でAudioMixerのマスターボリュームを上げ下げする /// /// 事前準備 ///(1) ProjectビューでAudioMixerを作成する ///(2) AudioMixer編集画面でMasterを選択し、インスペクターの Volume を右クリックしてExpose to scriptする ///(3) AudioMixer > Exposed Parameters でExposeされたパラメーターを右クリックし、分かりやすい名前に変えておく ///(4) 各ゲームオブジェクトやプレハブにアタッチされたAudioSourceのOutputに、作成したAudioMixerを指定する ///(5) このスクリプトを適当なゲームオブジェクトにアタッチし、インスペクターで各項目を設定する /// /// </summary> public class AudioVolumeControlByKey : MonoBehaviour { public KeyCode volumeDownKey, volumeUpKey; public enum VolumeControlSpeed { slow = 1, middle = 2, fast = 3 } public VolumeControlSpeed volumeControlSpeed = VolumeControlSpeed.middle; public AudioMixer audioMixer; public string targetParameter; // AudioMixer > Master > Volume をExposeしたパラメーター名を指定する private const int MAX_VOLUME = 20, MIN_VOLUME = -40; private void Update () { if ( Input.GetKey ( volumeDownKey ) || Input.GetKey ( volumeUpKey ) ) AdjustVolume (); } private void AdjustVolume () { float currentVolume; audioMixer.GetFloat ( targetParameter, out currentVolume ); float adjustValue = (float) volumeControlSpeed * 0.1f; if ( Input.GetKey ( volumeDownKey ) ) audioMixer.SetFloat ( targetParameter, Mathf.Clamp ( currentVolume - adjustValue, MIN_VOLUME, MAX_VOLUME ) ); if ( Input.GetKey ( volumeUpKey ) ) audioMixer.SetFloat ( targetParameter, Mathf.Clamp ( currentVolume + adjustValue, MIN_VOLUME, MAX_VOLUME ) ); } }
設定方法
スクリプト内の summary に書いたとおりです。AudioMixer、AudioSourceの設定をしたうえで、このスクリプトを適当なオブジェクトにアタッチし、インスペクターの各項目を設定して使ってください。
参考資料
そもそもAudioMixerって何?って人は以下の記事が参考になるかも。(とりあえずPlayMakerを使うところの手前まで読めばOKかと)参考:Unity5で脱オレオレAudioManager - Qiita
不明点などあればご連絡ください。
コメント