デフォルトでは、シーンの読み込みと同時にオーディオデータもロードされますが、スクリプトで好きなタイミングにロードやアンロードができるようにしてみました。
オーディオファイルをインポートして、オーディオクリップのインスペクタを見ると、Preload Audio Dataのチェックが入っています。この状態だとシーンの読み込みと同時にロードされます。
オーディオデータの読み込み状況はAudioClip.loadStateで確認でき、アンロードはAudioClip.UnloadAudioDataメソッドでできます。ロードはAudioClip.LoadAudioDataメソッドを呼んだり、オーディオソソースを再生するときに行われます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AudioTest : MonoBehaviour
{
[SerializeField] AudioClip audioClip;
AudioSource audioSource;
[SerializeField] Text text;
// Start is called before the first frame update
void Start()
{
audioSource = GetComponent<AudioSource>();
audioSource.playOnAwake = false;
}
public void LoadAudio()
{
audioClip.LoadAudioData();
}
public void UnloadAudio()
{
audioClip.UnloadAudioData();
}
public void PlayAudio()
{
if(audioClip.loadState == AudioDataLoadState.Loaded)
{
audioSource.PlayOneShot(audioClip);
}
}
void Update()
{
text.text = audioClip.loadState.ToString();
}
}
Preload Audio Dataのチェックを切ると、シーンが読み込まれた直後は、まだオーディオデータが読み込まれていません。
その後、スクリプトでロード・アンロードを実行できます。