using UnityEngine; using UnityEngine.UI; public class SongDetailsUI : MonoBehaviour { [Header("this_song_SO")] public ScriptableObject this_song_SO; [Header("basic UI")] public Image song_bgImage; public Text songNameText; public Text artistNameText; public Text painterNameText; public Text difficultyText; public Text difficultyDesciptionText; public Text charterNameText; public Text dlcNameText; public Text bpmText; public Text songSerialNumberText; public Text personalRecordText; public Text thisSong_progressText; public Text thisSong_lastScoreText; //public Image songImage; public int id_of_thisSong; [Header("查看曲绘大图")] public GameObject picDetail; public Image profound_image; public Text detail_informations_text; [Header("难度选择按钮")] public Button Button_EZ; public Button Button_HD; public Button Button_IN; public Button Button_IM; private SongData currentSong; void Start() { if (SongDataHolder.SelectedSongData != null) { // 读取选中的 SongData currentSong = SongDataHolder.SelectedSongData; this_song_SO = currentSong; song_bgImage.sprite = currentSong.backgroudPIC; // 更新 UI 显示 songNameText.text = currentSong.songName; artistNameText.text = currentSong.artistName; painterNameText.text = currentSong.painter; charterNameText.text = currentSong.level_creator; dlcNameText.text = currentSong.belongsTo_whichDLC; songSerialNumberText.text = currentSong.songID.ToString(); bpmText.text = "BPM : " + currentSong.bpm.ToString(); profound_image.sprite = currentSong.fullscreen_songPicture; id_of_thisSong = currentSong.songID; detail_informations_text.text = $"{currentSong.artistName}" + " - " + $"{currentSong.songName}" + " | " + $"曲绘: {currentSong.painter}" + " | " + $"制谱: {currentSong.level_creator}" + " | " + $"DLC: {currentSong.belongsTo_whichDLC}"; if (currentSong.illustration != null) { //songImage.sprite = currentSong.illustration; //songImage.enabled = true; } else { Debug.LogWarning("歌曲封面为空:" + currentSong.songName); } Debug.Log("加载歌曲数据: " + currentSong.songName); } else { // Debug.LogError("SongDataHolder.SelectedSongData 为空!"); } picDetail.SetActive(false); // 初始化难度按钮 if (currentSong != null) { SetDifficultyButtons(currentSong.thisLevel_selectedDifficultyID); UpdateDifficultyUI(currentSong.thisLevel_selectedDifficultyID); Button_EZ.onClick.AddListener(() => OnDifficultySelected(0)); Button_HD.onClick.AddListener(() => OnDifficultySelected(1)); Button_IN.onClick.AddListener(() => OnDifficultySelected(2)); Button_IM.onClick.AddListener(() => OnDifficultySelected(3)); } } private void SetDifficultyButtons(int selectedDifficulty) { Button_EZ.image.color = new Color(1, 1, 1, selectedDifficulty == 0 ? 1 : 0); Button_HD.image.color = new Color(1, 1, 1, selectedDifficulty == 1 ? 1 : 0); Button_IN.image.color = new Color(1, 1, 1, selectedDifficulty == 2 ? 1 : 0); Button_IM.image.color = new Color(1, 1, 1, selectedDifficulty == 3 ? 1 : 0); } private void OnDifficultySelected(int difficulty) { if (currentSong != null) { currentSong.thisLevel_selectedDifficultyID = difficulty; SetDifficultyButtons(difficulty); UpdateDifficultyUI(difficulty); } } private void UpdateDifficultyUI(int difficulty) { var entry = GetChartEntry(difficulty); if (entry != null) { difficultyText.text = entry.difficultyLEVEL.ToString(); difficultyDesciptionText.text = entry.difficultyDescription; personalRecordText.text = entry.personalRecordForThisDifficulty.ToString(); } else { difficultyText.text = difficulty.ToString(); difficultyDesciptionText.text = ""; personalRecordText.text = "0"; } } private ChartFileEntry GetChartEntry(int difficulty) { foreach (var entry in currentSong.chartFiles) { if (entry.difficulty == difficulty) return entry; } return null; } }