サウンド

■概要

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

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

	unity_0180

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

	unity_0181

	よく使用する項目
		AudioClip =>
			再生するAudioClipを設定します。

		Loop => 
			チェックが入っていればループ、入っていなければ非ループで
			再生されます。

		PlayOnAwake =>
			チェックが入っていればオブジェクトが起動したタイミングで
			設定している音が再生されます。

		Volume =>
			音のボリュームを設定できます。
			ただし、最大ボリュームのサイズは1.0なので、
			小さくはできますが、元のデータよりもボリュームを
			大きくすることはできないので注意してください。

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

	unity_0182

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

		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();

		source.Play();

●PlayOneShot
	・関数名
		PlayOneShot

	・戻り値
		なし

	・引数
		AudioClip clip
			再生するAudioClip

		float vlolume = 1.0f
			再生ボリューム
			この引数はデフォルト引数で0~1.0の範囲で設定します。

	・内容
		PlayOneShotメソッドは引数で再生する音を設定します。
		再生中に再度PlayOneShotを実行すると現在再生中の音に
		新しい音を重ねて再生されます。

	・例
		AudioSource source = gameObject.GetComponent();

		// 再生するAudioClipはm_AudioClipに保存しているという設定
		source.PlayOneShot(m_AudioClip);

説明にあるようにPlayは上書き、PlayOneShotは合成という形で再生されるので、
BGMはPlay、SEはPlayOneShotを使用するのが適しているとされています。

■一時停止、停止

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

●停止
	再生している音を停止するにはAudioSourceコンポーネントの「Stop」メソッドを使用します。
	このメソッドは戻り値、引数はありませんので簡単に使用できます。

	・例
		AudioSource source = gameObject.GetComponent();

		source.Stop();

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

	・Pause例
		AudioSource source = gameObject.GetComponent();

		source.Pause();

	・UnPause例
		AudioSource source = gameObject.GetComponent();

		source.UnPause();