Files
bansonic_beta_main/Assets/songsDatabase/SongDataLoader.cs
T

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;
}
}
}