【Unity】オーディオデータを好きな時にロード・アンロードする

投稿者: | 2021-03-10

デフォルトでは、シーンの読み込みと同時にオーディオデータもロードされますが、スクリプトで好きなタイミングにロードやアンロードができるようにしてみました。

オーディオファイルをインポートして、オーディオクリップのインスペクタを見ると、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のチェックを切ると、シーンが読み込まれた直後は、まだオーディオデータが読み込まれていません。

その後、スクリプトでロード・アンロードを実行できます。

コメントを残す

メールアドレスが公開されることはありません。