LoginSignup
3
3

More than 3 years have passed since last update.

【Unity】調整しやすい音量設定スライダーを作る

Last updated at Posted at 2019-11-10

はじめに

Unityで音量設定機能を用意する場合、
基本はAudioMixerとuGUIのSliderを使うことになると思います。
やり方はこちらの記事が分かりやすくオススメです。
http://tsubakit1.hateblo.jp/entry/2015/05/23/234053

しかし、いざその通りに実装してみると、
(機能としては問題ないものの)どこか使いにくく感じます。
具体的にはすぐに音量が下がってしまって細かい調整がしにくいです。

今回はその点を解消する方法をご紹介したいと思います。

デシベルと音圧

なぜそのように感じるかの推測ですが、
AudioMixerから抜き出せる「Volume」がデシベルだからということになるでしょうか。1
デシベルは利便性のために音圧を常用対数で変換したものです。
すなわち、上がり幅が線形ではありません。(20デシベル上がるごとに音圧は10倍になる)
そのため、値が大きい領域では急激に変化し、小さい領域ではほとんど変わらないということになります。
pa-db.png
ただデシベル自体が人間の感覚に近いらしいので、音量調整をデシベルでやるのは何もおかしくない気もするのですが…。
スライダーなどで調整するとなると、スライダーを動かす量と音圧の変化量が大きく異なるため何となく扱いづらいと感じるということなんでしょうか。

結論

ともかく、Unityのスライダー(0~1)で音量を調整するにはデシベルではなく音圧で行う(下記の変換を行う)ことを推奨します。

  • スライダー値(s [0.0001, 1]) → AudioMixerのVolume(v [-80, 0])
v = 20 \times \log_{10} {s}
  • AudioMixerのVolume(v [-80, 0]) → スライダー値(s [0.0001, 1])
s = 10^{\frac v {20}}

ソースコード

ということで、最初から音量調整用を想定したスライダーのコンポーネントを作りました。
人間の感覚に合わなくなった…のかもしれませんが、調整するにはいい感じでできます。
よろしければ使ってみてください。
unity-volume-slider

参考


  1. 正確にはUnityのVolumeの単位は一般的なデシベルとは違うようです。一般的には0デシベルを最小可聴値とするのに対し、Unityでは0デシベルがデフォルト値的な何かになっているようです。なので範囲は-80~20。まあ基準値からの比という意味では同じです、多分…。 

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3