json 我的保存/加载系统不工作,永远不会创建目录

p5fdfcr1  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(91)

我有一个静态泛型类,用于加载和保存数据。我没有任何编译错误,但系统不保存或加载。我的项目是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
正如我在日志中看到的,如果我们认为我们没有任何数据,第一次加载是正常的。(对象名称后面的值是对象中的值。)
当保存发生时,对象具有修改后的值,路径不变。它没有找到任何目录,所以它创建一个新目录。
当我第二次加载时,它没有找到数据,并再次使用默认数据。
我需要数据能够正确加载。

sg24os4d

sg24os4d1#

因为在Load方法中,path是一个文件路径,但你使用Directory.Exists来检查文件是否存在,所以它总是返回false,你应该使用File.Exists

相关问题