首页 > 解决方案 > 为什么 FromJsonOverwrite 不将文件数据转换为我的类对象?

问题描述

我正在尝试将我的 Json 文件反序列化为 Monobehavior 类(我的 GameData 类,它包含健康、移动速度等内容)。这是我的代码:

private string _filePath;
private static DataService _instance;

public DataService Instance
{
    get { return _instance; }
}

private GameData _gameData;

private void Awake()
{
    DontDestroyOnLoad(gameObject);
    if (_instance == null)
    {
        _instance = new DataService();
    }
    if (_gameData == null)
    {
        _gameData = new GameData(1);
    }
}

public void LoadGameData(GameData gameData)
{
    _filePath = Path.Combine(Application.persistentDataPath, gameData.FileName);
    string json;
    if (File.Exists(_filePath))
    {
        json = File.ReadAllText(_filePath);
        _gameData = JsonUtility.FromJsonOverwrite(json,gameData);
    }
    else
    {
        Debug.Log("File missing.");
    }
}

public void SaveGameData(GameData gameData)
{
    string json = JsonUtility.ToJson(_gameData);
    _filePath = Path.Combine(Application.persistentDataPath, gameData.FileName);
    if (File.Exists(_filePath))
    {
        File.Create(_filePath).Dispose();
    }
    File.WriteAllText(_filePath,json);
}

我得到的错误是:

无法将类型 void 隐式转换为 GameData。

我做错了什么,我该如何解决?

如果解决方案是将我的数据放在不是从 MonoBehavior 派生的类中,我如何从我的游戏中访问这些字段?

标签: c#jsonunity3d

解决方案


您收到此错误,因为“FromJsonOverwrite”是无效的,它不返回任何内容。将您的代码更新为:

JsonUtility.FromJsonOverwrite(json, _gameData);

推荐阅读