はじめに
ゲームサウンドの実装において、およそ避けられないのが音量コンフィグかと思います。プレイヤーがスピーカーで調整出来るとはいえ、他のアプリ(ゲームに限らず)との兼ね合いを考えるとゲーム内に実装してあげたいですね。動画配信者がBGMやボイスを控えめにしたい、といった需要もあるかもしれません。
Unityの標準機能で実装する場合、Audio Mixerを使うことになります。音源ではなくAudio Sourceごとに音量を調節することになるため、小規模な状態では簡単に実装できますが、規模が大きくなるにつれどのオーディオソースを使うか気を使うことになり管理が大変です。
そこでADXを使って解決しましょう。ADXでは、音データにカテゴリ情報を埋め込めます。たとえばこの音はBGM、これはセリフ、これは効果音といったようにです。タグ付けをイメージするとわかりやすいです。カテゴリごとにボリューム設定ができるため、再生時に気を使う必要がなくなります。
本記事では、BGM・SE・UIの3カテゴリ毎に調整出来る音量コンフィグ画面の作り方を解説します。
この記事は「ADX2 for UE4で音量コンフィグを実装」のUnity版です。元記事作者のSigさん ( https://qiita.com/SigRem )の許可を得て作成しています。
https://qiita.com/SigRem/items/d30add04ff9a254b8aa4
動作確認環境
Windows 10 Home 20H2
Unity 2020.3.27f1 + ADX LE Unity SDK 3.06.03
CRI ADX LE Tools for Windows 3.46.02
前提記事
CRI ADXの導入方法や基本的な操作については、以下の記事を参照して下さい。
Unityのサウンド機能をADXで強化する
https://qiita.com/Takaaki_Ichijo/items/16e6501fc07f5b3b3377
AtomCraftを使い、サウンドをカテゴリごとに分ける
まずは、再生する音データの作成を行います。ADXにおいては、再生用のデータはUnityとは別のツール「AtomCraft」を使います。その手順については、元の記事(UE4向け記事)の同名の項と同じになりますので省略しています。
本記事の手順を試す場合は、まず元の記事の該当項目を進めてから本記事を進めてください。
UE4版との違いとして1点、「Atomキューシートバイナリのビルド」画面で、一番左下のオプション「UnityAssets出力」にチェックを入れるのを忘れないようにして下さい。
またカテゴリの設定をするインスペクターの表示が変わっているので、以下の画像を参考にして設定して下さい。
Unityへのインポート
Unityを起動し、任意のフォルダにアセットをインポートします。「CreateGameObject」でシーン上に配置し、「Preview」で各サウンドが再生されるかチェックしておきます。
uGUIでUIを作成
サウンドコンフィグ画面として、各カテゴリそれぞれに対し、ボリュームを設定するスライダーと再生テストをするためのボタンを作ります。「BGM」「SE」「UI」と名付け、以下の設定をそれぞれに行います。
以下のスクリプトを作成しアタッチします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AudioPlayTest : MonoBehaviour
{
public CriAtomSource bgmCriAtomSource;
public string categoryName;
private Slider slider;
private void Start()
{
slider = GetComponentInChildren<Slider>();
}
public void PlaySound()
{
if(bgmCriAtomSource.status == CriAtomSource.Status.Playing)
{
bgmCriAtomSource.Stop();
}
else
{
bgmCriAtomSource.Play();
}
}
public void SetVolume()
{
CriAtom.SetCategoryVolume(categoryName, slider.value);
}
}
アタッチしたAudioPlayTestのBgmCriAtomSourceにCriAtomSourceを設定します。CategoryNameにはAtomCraftで設定したカテゴリ名を記入します。
次に各SliderのOnValueChangedにSetVolumeを設定します。
最後に、各ButtonのOnclickに、上記のPlaySoundメソッドを設定します。
これで設定は完了です
実行し、ボタンで再生・停止、スライダーで個別に音量調整できるか確認しましょう
応用例
複数のカテゴリグループを作成した場合、それぞれ1つずつカテゴリを割り当てられるため、より細かい設定をすることが出来ます。(元記事参照)
例えばオープンワールドゲームなどでメニュー画面を開いた時、BGMだけ抑える(メニューを閉じれば元に戻す)といった演出が簡単に実装可能です。