我有一个静态泛型类,用于加载和保存数据。我没有任何编译错误,但系统不保存或加载。我的项目是Unity。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public static class DataManager
{
public static void Save<T>(T data, string path, string name)
{
path = Application.persistentDataPath + "/SaveData" + path;
if (!Directory.Exists(path))
{
Debug.Log("Create New Directory");
Directory.CreateDirectory(path);
}
path = path + "/" + name + ".txt";
Debug.Log("Save : "+path);
string json = JsonUtility.ToJson(data, true);
File.WriteAllText(path, json);
}
public static T Load<T>(string path, string name) where T : Savable, new()
{
path = Application.persistentDataPath + "/SaveData" + path + "/" + name + ".txt";
Debug.Log("Load : "+path);
T data = new T();
if (Directory.Exists(path))
{
Debug.Log("Data Exist (Load)");
string json = File.ReadAllText(path);
data = JsonUtility.FromJson<T>(json);
}
else
{
Debug.Log("Data Don't Exist (Load)");
data.Name = name;
}
return data;
}
}
我在程序中放了几个Debug.log()来查找问题,但什么也没找到。我也可以在保存之前和保存之后放置Debug.log(),并将其包含的数据放在保存之后。
Debug.Log
正如我在日志中看到的,如果我们认为我们没有任何数据,第一次加载是正常的。(对象名称后面的值是对象中的值。)
当保存发生时,对象具有修改后的值,路径不变。它没有找到任何目录,所以它创建一个新目录。
当我第二次加载时,它没有找到数据,并再次使用默认数据。
我需要数据能够正确加载。
1条答案
按热度按时间sg24os4d1#
因为在
Load
方法中,path
是一个文件路径,但你使用Directory.Exists
来检查文件是否存在,所以它总是返回false,你应该使用File.Exists
。