はじめに
ボタンを押す⇒音を鳴らす⇒メニューを開く
などの処理をしたかったので、その方法をまとめました。
概要
実現するために必要なのはSEが鳴っていることを取得するという処理です。これは、
audioSource変数.isPlaying
により実現されます。isPlayingがTrueの間はSEが鳴っており、Falseの場合は鳴っていません。
サンプルコード
以下のプログラムでaudioSourceとaudioClipを設定して、動作させれば、キーボードの「A」を入力するとSEが鳴り、終了するとコンソールに表示します。
using System.Collections; using UnityEngine; public class SeTest : MonoBehaviour { [SerializeField] AudioSource audioSource; [SerializeField] AudioClip audioClip; private void Update() { //Aボタンで音楽を鳴らす(2重で鳴らせないように条件を追加) if (Input.GetKeyDown(KeyCode.A) && !audioSource.isPlaying) { StartCoroutine(Cor()); } } //音楽を鳴らし、鳴り終わったことを通知するコルーチン IEnumerator Cor() { //音楽を鳴らす audioSource.PlayOneShot(audioClip); //鳴り始めたことを表示 Debug.Log("開始"); //終了まで待機 yield return new WaitWhile(() => audioSource.isPlaying); //終了したことを表示 Debug.Log("終了"); } }