using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class SongDataLoader : MonoBehaviour { private string jsonDirectory; public List loadedSongs = new List(); [SerializeField] private int _yieldEveryNFiles = 5; void Start() { jsonDirectory = Path.Combine(Application.persistentDataPath, "SongDataJson"); StartCoroutine(LoadAllSongsFromJsonRoutine()); } IEnumerator LoadAllSongsFromJsonRoutine() { if (!Directory.Exists(jsonDirectory)) { Debug.LogError("JSON �ļ��в����ڣ�"); yield break; } loadedSongs.Clear(); IEnumerable jsonFiles = Directory.EnumerateFiles(jsonDirectory, "*.json"); int counter = 0; foreach (string file in jsonFiles) { string json = File.ReadAllText(file); SongDataSerializable jsonData = JsonUtility.FromJson(json); loadedSongs.Add(jsonData); // 由于 SongDataSerializable 现在只存储动态分数,不再包含 songName Debug.Log($"Loaded persistent song data from: {Path.GetFileName(file)}"); counter++; if (_yieldEveryNFiles > 0 && counter % _yieldEveryNFiles == 0) yield return null; } } }