2026-05-10 11:52:37 +08:00

100 lines
2.4 KiB
C#

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<MusicInfo> MusicDataList = new List<MusicInfo>();
[NonSerialized]
private bool _initialized = false;
/// <summary>
/// 通过 MusicName(对应AudioManager的key, 如 "RemiliaEgyptian") 查询信息
/// </summary>
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;
}
/// <summary>
/// 通过阵营+文明查询信息(用于在玩家页面快速找到对应BGM)
/// </summary>
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;
}