Developer

【初心者Unity】音を鳴らすPlayOneShotの使い方
2022.02.28
Lv1

【初心者Unity】音を鳴らすPlayOneShotの使い方

Unityで音を鳴らす


Unityで効果音を鳴らすときに使用するPlayOneShotの使い方を紹介します。
似た機能を持つPlayという関数もあるので、併せて紹介します。

音を鳴らすにはAudioSourceコンポーネントを使用します。
本記事では説明を割愛しますので、詳しく知りたい方は以下を参考にしてください。

【初心者Unity】BGM・SE(効果音)の付け方

AudioSource.PlayOneShot

PlayOneShot関数は効果音の再生に適しています。

■特徴
・音を重ねて再生できる
・引数で音量の調節ができる(0~1の範囲)

■定義
public void PlayOneShot (AudioClip clip, float volumeScale= 1.0F);

clipはAudioSourceに設定された音源ファイル。
volumeScaleは音量の倍率です。(0~1.0で指定でき、デフォルトは1.0。省略可)

■サンプル
マウスの左クリックを押している間、繰り返し再生するサンプルです。
※ある程度長さのある音源の方が、音の重なりがはっきりとわかります。

using UnityEngine;

public class PlayOneShot_Sample : MonoBehaviour {

	AudioSource audioSource;

	void Start() {
		audioSource = GetComponent<AudioSource>();
	}

	void Update() {

		if (Input.GetMouseButton(0)) {
			audioSource.PlayOneShot(audioSource.clip);
		}
	}
}

■補足
左クリックを押しっぱなしにするとわかりますが、音が連続で再生されて部分的に重なって鳴っていることがわかります。
このようにPlayOneShotは、同時に鳴ることがある効果音(射撃音や攻撃のヒット音など)の再生に適しています。
音源が短いとわかりづらいかもしれませんが、この後紹介するPlay関数と比べてみればよくわかると思います。

AudioSource.Play

Play関数はBGMの再生に適しています。

■特徴
・同じ音源は重ねて再生できない。(連続再生した場合、上書きされて頭から再生される)
・一応遅延が設定できるが現在は非推奨。

■定義
public void Play (ulong delay= 0);

Play関数はClipを指定できません。AudioSourceにアタッチされた音源を再生します。
delayは遅延を設定でき、デフォルトは遅延なしの0。サンプリングレートが44100Hzの音源の場合、「44100」と指定すれば1秒遅延する。
こちらは現在非推奨の機能です。遅延再生したい場合は、遅延時間を(秒)で指定できるAudioSource.PlayDelayedを使います。

■サンプル
マウスの左クリックを押している間、繰り返し再生するサンプルです。

using UnityEngine;

public class PlayOneShot_Sample : MonoBehaviour {

	AudioSource audioSource;

	void Start() {
		audioSource = GetComponent<AudioSource>();
	}

	void Update() {

		if (Input.GetMouseButton(0)) {
			audioSource.Play();
		}
	}
}

■補足
左クリックを押しっぱなしても音が重ならず、クリックするたびに音源が頭から再生され直すことがわかります。
このようにPlayは、BGMなど一つの音が重なって鳴ることがない音源の再生に適しています。

以上、PlayOneShotとPlayの紹介でした。

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次