サウンド

概要

UnityのサウンドはAudioClipをAudioSourceに設定して再生し、
AudioListenerから自分たちのPCに出力されます。
各内容については以下で解説しますが、「AudioClip => 音源」「AudioSource => プレイヤー」
「AudioListener => スピーカー」の役割をしていると考えればイメージしやすいと思います。

AudioClip

AudioClipはUnityにおけるサウンドデータの名称です。 サウンドファイルをUnityにインポートするとAudioClip形式に変換されます。 「wav」「ogg」「mp3」が使用できるサウンドファイル形式です。 unity_0180 unity_0180

AudioSource

AudioSourceはコンポーネントの1種でAudioClipを再生する機能を持っています。 このコンポーネントの機能にはAudioClipの再生の他に Loop設定やボリュームの調整、Pitchの変更など様々な機能があります。 unity_0180 unity_0180

よく使用する項目

AudioClip: 再生するAudioClipを設定します。 Loop: チェックが入っていればループ、入っていなければ非ループで再生されます。 PlayOnAwake: チェックが入っていればオブジェクトが起動したタイミングで 設定している音が再生されます。 Volume: 音のボリュームを設定できます。 ただし、最大ボリュームのサイズは1.0なので、 小さくはできますが、元のデータよりもボリュームを 大きくすることはできないので注意してください。

AudioListener

AudioListenerはAudioSourceで再生されている音を 外部に出力するためのコンポーネントです。 このコンポーネントを設定されているGameObjectが存在しないと AudioSourceで再生していたとしても音は出力されません。 ※MainCameraにデフォルトで設定されています。 unity_0182 unity_0182

設定数

AudioListenerの設定は複数設定することは推奨されておらず バージョン5.5までは複数設定していると以下のような警告がでます。 unity_0183 unity_0183

再生

PlayOnAwakeにチェックを入れていない場合、スクリプト上で再生処理を行う必要があります。
再生は「Play」と「PlayOneShot」があり、使用用途によって使い分けており、
主にBGMではPlay、SEではPlayOneShotが使用されています。

Playメソッド仕様

関数名: Play 戻り値: なし 引数: ulong delay = 0 遅延時間の設定 ・解説 この引数はデフォルト引数で、値は「delay = 秒」ではなく、 遅延時間を出す計算式で使用されます。 計算は「delay/44100」で行われ、計算結果が遅延時間です。 例えば22050を設定した場合は「22050/44100 = 0.5」なので、 0.5秒遅延して再生されます。 内容: Playメソッドは設定されているClipを再生するメソッドです。 再生中に再度Playを実行すると今再生中の音を終了させてたから、 新規の音を再生します。 例: AudioSource source = gameObject.GetComponent<AudioSource>(); source.Play();

PlayOneShot

関数名: PlayOneShot 戻り値: なし 引数: AudioClip clip 再生するAudioClip float vlolume = 1.0f 再生ボリューム この引数はデフォルト引数で0~1.0の範囲で設定します。 内容: PlayOneShotメソッドは引数で再生する音を設定します。 再生中に再度PlayOneShotを実行すると現在再生中の音に 新しい音を重ねて再生されます。 例: AudioSource source = gameObject.GetComponent<AudioSource>(); // 再生するAudioClipはm_AudioClipに保存しているという設定 source.PlayOneShot(m_AudioClip); 説明にあるようにPlayは上書き、PlayOneShotは合成という形で再生されるので、 BGMはPlay、SEはPlayOneShotを使用するのが適しているとされています。

一時停止、停止

Unityでは再生中の音を停止させたり一時停止から再度再生させたりするメソッドも用意されています。
停止、一時停止、再開はAudioSourceの再生中の音に対して影響があるので、
Play、PlayOneShotのどちらで再生していたとしても効果があります。

停止

再生している音を停止するにはAudioSourceコンポーネントの「Stop」メソッドを使用します。 このメソッドは戻り値、引数はありませんので簡単に使用できます。 例: AudioSource source = gameObject.GetComponent<AudioSource>(); source.Stop();

一時停止、再開

再生中の音を停止させるのではなく一時停止しておき、再度停止箇所から再生させるには 「Pause」と「UnPause」メソッドを使用し、Pauseが一時停止、UnPauseが再開です。 どちらも引数、戻り値はありませんので簡単に使用できます。 Pause例: AudioSource source = gameObject.GetComponent<AudioSource>(); source.Pause(); UnPause例: AudioSource source = gameObject.GetComponent<AudioSource>(); source.UnPause();