UnityでAudioSourceを使って『ピコン、ピコン』と1秒おきに音を鳴らすには、単純にPlay()を呼ぶだけでは連続再生できません。正しいタイミングで再生するための方法を解説します。
AudioSource.Play()の基本動作
AudioSource.Play()は呼ばれた瞬間に音を再生しますが、ループやタイマー機能は持っていません。そのため、連続で1秒おきに音を鳴らしたい場合は自動的には動作しません。
例として、Update()内でPlay()を繰り返し呼ぶと、フレームごとに再生されて音が重なり、うまく聞こえません。
コルーチンを使った1秒おきの再生
1秒おきに音を鳴らすには、コルーチンを使うのが一般的です。コルーチンを使うことで一定間隔で処理を遅延させ、AudioSource.Play()を呼び出せます。
例:
IEnumerator PlaySoundRepeatedly() {
while(true) {
audioSource.Play();
yield return new WaitForSeconds(1f);
}
}
// Start()で呼び出す
StartCoroutine(PlaySoundRepeatedly());
InvokeRepeatingを使う方法
もう一つの方法としてInvokeRepeating()があります。この関数を使うと、指定した間隔でメソッドを自動的に呼び出せます。
例:
void Start() {
InvokeRepeating("PlayBeep", 0f, 1f);
}
void PlayBeep() {
audioSource.Play();
}
音声ファイルの確認
音が鳴らない場合は、AudioSourceにアタッチしているAudioClipが正しく設定されているか確認してください。Muteになっていないか、Volumeが0でないかもチェックが必要です。
また、AudioClipのImport設定でLoad TypeがStreamingになっている場合、短い効果音はDecompress On Loadにすると再生がスムーズになります。
まとめ
Unityで1秒おきに音を鳴らすには、Update()でPlay()を呼ぶのではなく、コルーチンやInvokeRepeatingを利用して一定間隔で再生するのが正しい方法です。AudioClipの設定も確認することで、意図した通りに『ピコン、ピコン』と音を鳴らすことができます。


コメント