using System.IO; using UnityEngine; public class SongDataManager : MonoBehaviour { // 保存 JSON 文件的目录路径 private string jsonDirectory; void Start() { // 获取持久化数据路径,并在其下创建 "SongDataJson" 文件夹 jsonDirectory = Path.Combine(Application.persistentDataPath, "SongDataJson"); // 如果目录不存在,则创建目录 if (!Directory.Exists(jsonDirectory)) { Directory.CreateDirectory(jsonDirectory); Debug.Log("创建 JSON 存储目录: " + jsonDirectory); } else { Debug.Log("JSON 存储目录已存在: " + jsonDirectory); } // 调用方法,将所有 SongData 资源转换为 JSON 并保存 SaveAllSongDataToJson(); } void SaveAllSongDataToJson() { // 从 Resources 文件夹下的 "SongData" 子目录加载所有 SongData 资源 SongData[] allSongData = Resources.LoadAll("song_songIndex"); // 如果没有加载到任何 SongData,输出警告信息 if (allSongData.Length == 0) { Debug.LogWarning("未在 Resources/SongData 中找到任何 SongData 资源!"); } // 遍历每个 SongData 资源 foreach (SongData song in allSongData) { // 使用 SongDataSerializable 将 SongData 转换为可序列化对象 SongDataSerializable jsonData = new SongDataSerializable(song); // 将对象转换为 JSON 格式字符串,true 表示格式化输出(便于阅读) string json = JsonUtility.ToJson(jsonData, true); // 构造 JSON 文件的完整路径,文件名使用 songID 命名,例如 "123.json" string filePath = Path.Combine(jsonDirectory, song.songID + ".json"); // 将 JSON 内容写入文件 File.WriteAllText(filePath, json); // 输出调试信息,显示已保存的 JSON 文件路径 Debug.Log("已保存 JSON 文件: " + filePath); } } }