はじめに
Unityアセット「Feel」は音に関する機能も幅広くサポートしています。
この記事ではその1つである音量調節について解説したいと思います。Feelの機能で音を再生する際は音楽/効果音/UIそれぞれのカテゴリに音を割り当てることができ、カテゴリごと・あるいは全体の音量レベルを個別に設定することができます。
本記事の記述はUnityの基本的な使い方(イベントに対して呼ばれるメソッドの紐づけ方など)や、Feelの基本的な使い方(Feedbackの作成・編集方法)は把握していることを前提としております。
やり方
まずは適当にオプション画面のようなものを作ってみます。音源も好きなものを用意しましょう……またFeelの機能で音を鳴らすにはシーン内にMMSoundManagerをアタッチしたGameObjectが必要になります。忘れずに作成しましょう。
続いてコードです。上記の画面ではMasterにはSliderのみ、残りのMusic/Sfx/UIそれぞれのパネルにSliderとButtonを含めており、パネルにアタッチするComponentを下記のとおりに作ってそこから参照しています。
using UnityEngine;
// これらのインポートが必要
using MoreMountains.Tools;
using MoreMountains.Feedbacks;
public class SandboxFeelVolumeTest : MonoBehaviour
{
// Master(全部)/Music/Sfx/UIのどの音量を変更するか
public MMSoundManager.MMSoundManagerTracks Track;
// 音を鳴らすFeedback
public MMFeedbacks soundTestFeedBack;
// (Start, Updateは省略)
// SliderのOnValueChangedに紐づけて値を受け取るメソッド
public void OnSliderValueChanged(float value)
{
// Trackで指定したカテゴリの音量を調整
// valueは0-1の値にしておくこと
MMSoundManagerTrackEvent.Trigger(MMSoundManagerTrackEventTypes.SetVolumeTrack, Track, value);
}
// 音を再生するメソッド。ボタンのOnClickから呼び出すこと
public void OnPlaySoundButtonPressed()
{
if (soundTestFeedBack != null)
{
soundTestFeedBack.PlayFeedbacks();
}
}
}
音を鳴らすためのsoundTestFeedBackには、Audio > MMSoundManager Soundを追加します。
Sound > Sfxに鳴らしたい音のアセットを追加し、SoundManager Options > MM Sound Manager Trackにそのカテゴリを指定します。ループさせたい場合はSoundManager Options > Loopにチェックを。
MM Sound Manager Trackをそれぞれ正しく指定できていれば、スライダーを動かすことで対応した音の音量が変化するはずです。
なおMMSoundManagerTracks以外にもUnityに標準実装されているAudio Mixer Groupをあてがい、それに基づいて音量調節を行うことも可能です。こちらはMMSoundManagerTracksと違って任意に種類を増やすことができますが、音量設定がデシベル値になるので、ゲームのオプション等で調整できるようにするにはひと手間いります。必要に応じて使い分けるとよいでしょう。

