原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】AudioMixerを使った音量の一括調整

シン・仮面ライダー

事前情報を入れずに劇場にいったら入場者特典とやらで色紙サイズのサインペーパー(2枚)を配られ、鞄の中に仕舞い切れず扱いに困った皆さんこんにちは。これから観に行かれる方は大きめのバックを持っていくことをお勧めします。
映画の内容は、無駄に高いところから現れるヒーロー、ポーズを取るたびに何処からともなく鳴り響くSEや、ご都合主義&ぶった切りのストーリー展開といった70年代の昭和ヒーロー物をリスペクトする内容で、元ネタを知っている方ならニヤニヤするような小ネタが沢山仕込まれているヲタク向けの同人映画、といった感じでしょうか。
「何だこの力は?一体僕はどうしてしまったんだ!」から「僕はこの力で人類を守る」まで10分も掛からずに心変わりしますが昭和ヒーローとはそういうモノなんです。だから大きな不満はありませんが、戦闘場所は必ず山奥の採石場であちこちで爆発が起こる、といったこれも昭和ヒーローのお約束が無かった事が唯一残念だった点でしょうか。

 

unity1week

前回の更新時には制作中だったunity1week向けのゲームですが、その後無事に投稿することができました。
今回はリズムゲームで、且つ音ゲーのようなノーツが振っているタイプではないゲームにする、という事を目標にゲームデザインを考え、結果、一筆書きと組み合わせたようなゲームを作成しました。

unityroom.com

相変わらず閲覧数や評価数が少なくので結果はもう諦めているのですが、「タイミングがシビア」という感想を頂き、自身では全く気付かなかった事なのでやはり第三者から感想をもらう事は重要なことなんだなぁ、という事を改めて認識しました。
気になった方は上のリンクから飛んで遊んで見て下さい。それも面倒くさい、もしくは難しくてクリアできない、という方のためにプレイ動画を下に作成したので、ちょっとでも見てやってください。

youtu.be

 

音量調整機能

unity1weekは(基本的に)1週間でゲームを作り上げるイベントなので、個人的にはゲーム本編とそれに伴う必要な機能を作るだけで十分だと思っているのですが、unity1weekのゲームを評価する人の中には、音量調節機能の有無がゲーム評価を左右する、との考えを持っている方がいるようで、音量調節がない場合は無条件に(サウンドの)評価を一段階低くする、といった評価基準で採点されています。

この為、noteなどで見かける「unity1weekの攻略法」といった内容の記事では「音量調節機能は必須」などと書かれており、実際に最近の投稿作品の多くは音量調節機能が実装されています。
とはいえBGMやSE、ボイス等、ゲーム内で音を鳴らす箇所は様々複数存在するため、各それぞれにオプションで設定した音量の値を反映するのは非常に面倒で手間が掛かります。

Unityではこの手間を出来る限り少なくする為にAudioMixerという機能が用意されています。

AudioMixerAudioSourceの鳴らす音を一括管理する事ができ、且つ、各AudioSourceをBGM/SE/ボイスなどの音量は各カテゴリに分けて管理するといったことが実現できます。

 

作り方

最初にAudioMixerをプロジェクト内に作成します。

1.Projectで右クリックしてCreateからAudioMixerを指定します。

プロジェクト内にAudioMixerが作成されます。

 

2.AudioMixerを選択してInspectorに表示される「Open」ボタンを押します

AudioMixerのウィンドウが開きます。

 

3.Groupsの「+」を押してカテゴリ毎にグループを作成します。

 

4.AudioMixerにグループを作成したら、音量調整を行うためのパラメータを各グループ毎に追加して行きます。

各グループのInspector上から「Volume」を右クリック→「Expose 'Volume(of グループ名)' to script」を選択します。

 

5.AudioMixerウインドウの右上に「MyExporsedParam」が作成されるので、これを適切な名前に変更します。

 

6.すべてのグループにパラメータを追加するとこんな感じ。これでAudioMixer側の準備が完了しました。

 

スクリプト側の制御

スクリプトでAudioSourceとAudioGroupを紐づけます

スクリプトにAudioGroupを格納する変数とAudioSourceを格納する変数をそれぞれ用意

Inspectorからそれぞれに適用

AudioSourceのoutputAudioMixerGroupにAudioGroupを指定することで紐づけを行います。

後はAudioMixerにSetFloatで先程作成したMyExporsedParamの名前を指定し音量の値を設定します。

音量の値は-80~20となるようにします。

スライダーで設定したい場合は、スライダーのMin・Maxの値を-80,20に指定すれはスライダーの値をそのまま代入することができます。

 

注意点ですがAudioGroupのMasterは主音量を示しています。追加した他のグループの親となっているの為、Masterの音量を変更すると子である他グループもそれに追随して変更されるので注意してください。

上記までの対応によりゲーム内の各グループの音量を一括で変更できるようになります。unity1weekでも音量調整機能を実装したいと思う方は参考にして下さい。

 

「W.T.」では実装してるよ!

unity1weekでは今後も音量調整機能を実装するつもりはありませんが、先日体験版をリリースした「W.T.」ではオプション機能として音量調整機能は実装しています。

右のリリース作品欄のリンクからダウンロードすることができるので是非ダウンロードして遊んでください。(無料です。)

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。