Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Unity AudioMixerで音量等のパラメータをスクリプトから操作する際のつまりポイントメモ

経緯

Unityのスクリプトリファレンスなどだと若干わかりづらかった & ググってもなかなか良い記事に巡り合わなかったためここにメモ

Unity5.6あたりからサウンド周りの管理用コンポーネントとして AudioMixerがある、これはGUIでのサウンドの調整やエフェクトの追加等々が行える便利な機能

↓詳しくは公式リファレンスを参照↓
マニュアル
スクリプトリファレンス

サウンドの音量を下げる方法( パラメータ出力から設定まで )

先ずProjectWindowにて適当なAudioMixerを作成する

ProjectWindow > ContextMenu( 右クリック ) > Create > AudioMixer
image.png

今回はTestAudioMixerを作成、初期状態の画像が以下の通り
image.png

今回は画像のMaster要素( グループという )の操作をメインに扱う
次はこのAudioMixerを編集するためにAudioMixerWindowを開く
メニューの Window > Audio > AudioMixer
又はショートカットの Ctrl + 8
image.png

AudioMixerのデフォルト画面が下の通り
image.png

今回メインで扱うのは画像のうちでの Groups要素
Groupsの右端にある + アイコンをクリックまたはGroups要素上で右クリック Add child groupを選択し新しいグループを作成する
この際新たに作成したGroupは必ずMasterの下に来るMasterの下であれば各種グループの親子構造は自由に編集できる

今回はSEというグループを新たに作成した、新たなグループを作成したウィンドウ↓
image.png

ただしこのままではスクリプトからのアクセスは出来ずUnityのGUIからのみ編集可能の状態、これをスクリプトからアクセスし編集できるようにするまでが今回の記事

次に見る箇所はAudioMixerからInspectroに移る、SEグループを選択したうえでInspectorを表示すると下図のようになる
image.png
image.png

図のAttenuation 要素の Volumeにカーソルを合わせ右クリック > Expose 'Volume (of SE)' to scriptを選択する、こうすることでスクリプトからアクセス可能になる、ただしこのままだとスクリプトからアクセスする際のKeyがわからない
ちなみにVolumeでアクセスを試みたところ駄目だった
ではどんなパラメータ名になっているのか、確認する方法は以下の通り( 個人的にこれは罠だと思ってる、すっげぇわかりづらい )

image.png
image.png

赤矢印の箇所をクリックして開く、すると先ほど作成したパラメータ名がわかる( MyExposeParam )となってるところ
右クリックでメニューを開き、Rename を選択、今回は SE という名前にした
image.png

これでスクリプト上からアクセスできる
スクリプト例( あらかじめInspector上からmixerパラメータにAudioMixerへの参照を設定しておく )

    void Hoge()
    {
            mixer.SetFloat("SE", -40f);
    }

要注意な点はここで設定する値は 0 ~ 1 の値ではなくdB単位( -80 ~ 0 )なので直感的な0 ~ 1での制御をしたい場合は別途 0 ~ 1 をデシベルに変換する関数を作成する必要がある

↓参考ページ
http://www.proaudioinfo.com/shiryou/db/db.htm

関数にするとこんな感じ

    // 0 ~ 1の値をdB( デシベル )に変換.
    float ConvertVolume2dB(float volume) => Mathf.Clamp(20f * Mathf.Log10(Mathf.Clamp(volume, 0f, 1f)), -80f, 0f);

あとがき

いろいろエフェクトを掛けられたりできるので便利なため今後この AudioMixer を活用していきたい
今回はここまで、地味にこのパラメータをスクリプト上から操作するの手順が見つからなかった( Unityにはもう少しわかりやす手順書を作ってもらいたいところ或いはたんに見つけられてないだけ? )

matsumotokaka11
VRやMR系のアプリ開発を行ってます 今後趣味とかでのアプリ開発時に気づいた点なども書いていきたい ( 願望
https://technical-protain.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away