Unity C#でAudioSourceを使って1秒おきに音を鳴らす方法

C言語関連

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の設定も確認することで、意図した通りに『ピコン、ピコン』と音を鳴らすことができます。

コメント

タイトルとURLをコピーしました