Files
bansonic_beta_main/Assets/songsDatabase/SongDataManager.cs
T
2025-06-02 00:48:08 +08:00

59 lines
1.8 KiB
C#

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<SongData>("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);
}
}
}