実用性があるかは不明。
SoundLib.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class SoundLib : MonoBehaviour {
public enum Bgms {
bubble,
bgm_test1,
bgm_test2,
bgm_test3
}
public enum Ses
{
btn_001,
se_test1,
se_test2,
se_test3
}
[Serializable]
private class AudioClips
{
[HideInInspector]
public string id;
public AudioClip file;
}
[SerializeField]
private List<AudioClips> bgmList = new List<AudioClips>(Enum.GetNames(typeof(Bgms)).Select( s => new AudioClips() { id = s }));
[SerializeField]
private List<AudioClips> seList = new List<AudioClips>(Enum.GetNames(typeof(Ses)).Select( s => new AudioClips() { id = s }));
}
Serializableなクラスの最初のフィールド変数がstringである場合、Inspector上のListの要素名は「Element 0」といった表記ではなく、stringの文字列に変更される。stringの変数自体は表示されていると見た目的に邪魔になるため、[HideInInspector]で非表示にした。
上では実装していないが、enumをkeyとするDictionaryのようにアクセスできるようにしたい。