(Unity6)BGMのデータベースを作成する(スクリプタブル・オブジェクトの活用)

(サンプルコード)

・その1

using UnityEngine;
using System;

[Serializable]
public class BGMStatus
{
    public string BGMName;
    public AudioClip bgm;
}

・その2

using UnityEngine;
using System.Collections.Generic;

[CreateAssetMenu(fileName = "BGMDatabase", menuName = "Scriptable Objects/BGMDatabase")]
public class BGMDatabase : ScriptableObject
{
    public List<BGMStatus> BGMList;
}

(データベースの設定)


(BGMを切り替えるサンプルコード)

using UnityEngine;

public class BGMChange : MonoBehaviour
{
    public BGMDatabase bgmData;
    private AudioSource audioSource;
    private int num = 0;

    private void Start()
    {
        audioSource = GetComponent<AudioSource>();

        // 初期のBGMのセット
        audioSource.clip = bgmData.BGMList[num].bgm;
        audioSource.Play();
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            // 次のBGMのセット
            num = (num + 1) % bgmData.BGMList.Count;

            audioSource.clip = bgmData.BGMList[num].bgm;

            // 再生
            audioSource.Play();
        }
    }
}

(設定)


(実行結果)

・設定が完了したらゲームを再生

・スペースキーをおすごとにBGMが切り替われば成功