43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
|
|
public class SongDataLoader : MonoBehaviour
|
|
{
|
|
private string jsonDirectory;
|
|
public List<SongDataSerializable> loadedSongs = new List<SongDataSerializable>();
|
|
[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<string> jsonFiles = Directory.EnumerateFiles(jsonDirectory, "*.json");
|
|
int counter = 0;
|
|
|
|
foreach (string file in jsonFiles)
|
|
{
|
|
string json = File.ReadAllText(file);
|
|
SongDataSerializable jsonData = JsonUtility.FromJson<SongDataSerializable>(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;
|
|
}
|
|
}
|
|
}
|