Help us understand the problem. What is going on with this article?

UnityのAudioMixerでダッキング再生とかあれこれ

More than 1 year has passed since last update.

AudioMixerの音量の設定とか

まぁここ見て、その通りにやればいいよ。
http://tsubakit1.hateblo.jp/entry/2015/05/23/234053

ただAudioMixerの音量はデジベル(-80~0)なので注意。
AudioSource.volumeの0f~1fの感覚でやるとダメだぞ。
0.5f = -40dB とか思ってやると、全然音が50%より小さくなるぞ。

※あと20dBとか設定できて、音量上げれると思うが、
 ただ音割れするだけだからやめたほうがいい

詳しいことはググれ。
結果だけ載せる。

デジベル(dB)変換の式は、
dB = 20.0 × log10(i0/i1) ※「i0/i1」は割合
なので、C#で書くと、
20 * Mathf.Log10(volume);
すりゃええねん。

volumeにはスライダーの値とか(0f~1f)を送ればいい。
丁寧に値のバリデートするなら以下のように。

public void SetBgmVolume(float _volume)
{
    float volume = Mathf.Clamp(_volume, 0.0001f, 1.0f);
    var volumeDB = (float) (20.0d * Math.Log10(volume));
    audioMixer.SetFloat("BGMVol", Mathf.Clamp(volumeDB, -80.0f, 0.0f));
}

AudioMixerのダッキング再生の方法とか

そもそもダッキング再生ってなんぞや?

例えば、キャラクターがセリフをしゃべっている時に、
BGMがそのまま鳴っているとセリフが聞こえにくいから、BGMの音量さげる的な奴のこと。

そんなん、自分で好きに音量設定したらええやろ、って思うが。

まぁここ見て、その通りにやればいいよ。
http://kikikiroku.session.jp/unity5-basic-audio/#Voice

ただこの方法だと、
ボイスが再生されているときは、必ずBGMの音量が下がってしまう。

「戦闘中のボイスではBGN下げたくないんだよねぇ」

とか無能プランナーが言ってくるのはざらなので、
その場合は、ダッキングさせないボイスの別グループを作るか、SEで鳴らすとかで。

さて本題

音量設定しつつ、その音量設定の元、ダッキング再生する方法

http://kikikiroku.session.jp/unity5-basic-audio/#Voice
ここの設定では固定値で-40dB
ダッキングでBGM音量を下げるようになっているので、
その固定値で音量が下がってしまう。

「音量設定した音量の50%の音量でダッキング再生してくれ」

とか無能プランナーが言ってくるのはざらなので、
ダッキングの音量をスクリプトで設定できるようにしておく。

やり方は簡単。

ボリューム設定の時と同じ感じで、
InspectorビューでBGMのDuck VolumeのThresholdを右クリックし、
Export ’Threshold (of BGM→Duck Volume)’ to scriptを選択。

Test.png

Exposed Parametersで、「DuckVol」とか好きな名前に変更。

あとは、BGMの音量設定を変更するときなどに、
一緒に(スライダーの値を送って)設定してあげればいい。

public void SetDuckVolume(_volumeRate)
{
    float DuckVolumeRate = 0.5f // どっかに定数定義してもいい
    float duckVolume = Mathf.Clamp(_volumeRate * DuckVolumeRate , 0.0001f, 1.0f);
    var duckVolumeDB = (float)(20.0d * Math.Log10(duckVolume));

    audioMixer.SetFloat("DuckVol", duckVolumeDB);
}

サウンドの実装であれこれ困った場合

Unityのサウンド周りは、
Unity5で特大のクソからクソになっただけ少しはマシになったが、
必要な最低限な機能しかないので、
だいたいCRIの『ADX2』を導入すれば解決してくれるよ。
https://game.criware.jp/products/adx2-smartphone/

ただUnityのポンコツAssetBundleとの相性は最悪だけど。

Unityのサウンドが最低限のクソみたいな機能しかないのは、
こういうミドルウェアに配慮という名の手抜きなんじゃないかな。

u-n-k-man1gou
早く僕のところにも仙狐さん来てくれないかな・・・
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