using System; using System.Collections.Generic; using UnityEngine; using Logic.Multilingual; [Serializable] [CreateAssetMenu(fileName = "MusicDataAssets", menuName = "TH1 Game Data/Music Data Asset")] public class MusicDataAssets : ScriptableObject { public List MusicDataList = new List(); [NonSerialized] private bool _initialized = false; /// /// 通过 MusicName(对应AudioManager的key, 如 "RemiliaEgyptian") 查询信息 /// public bool GetMusicInfo(string musicName, out MusicInfo info) { info = null; if (string.IsNullOrEmpty(musicName)) return false; foreach (var t in MusicDataList) { if (t.MusicName == musicName) { info = t; return true; } } return false; } /// /// 通过阵营+文明查询信息(用于在玩家页面快速找到对应BGM) /// public bool GetMusicInfo(ForceEnum force, CivEnum civ, out MusicInfo info) { info = null; foreach (var t in MusicDataList) { if (t.Force == force && t.Civ == civ) { info = t; return true; } } return false; } } [Serializable] public class MusicInfo { [Tooltip("作为唯一Key,需要和AudioManager._clips的key一致(如 RemiliaEgyptian / Main / Story)")] public string MusicName; [Tooltip("音乐资源(AudioClip引用)")] public AudioClip MusicClip; [Tooltip("封面图")] public Sprite CoverSprite; [Tooltip("背景图")] public Sprite BackgroundSprite; [MultilingualField] [Tooltip("曲名")] public string Title; [MultilingualField] [Tooltip("原曲名")] public string OriginalTitle; [Tooltip("所属阵营(东方角色),非角色BGM填Common")] public ForceEnum Force; [Tooltip("所属文明,非文明BGM填Common")] public CivEnum Civ; [MultilingualField] [Tooltip("作曲")] public string Composer; [MultilingualField] [Tooltip("编曲")] public string Arranger; [MultilingualField] [Tooltip("混音")] public string Mixer; [MultilingualField] [Tooltip("演唱")] public string Vocalist; [MultilingualField] [Tooltip("曲绘")] public string Illustrator; }