我正在尝试将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派生的类中,该如何从游戏中访问这些字段?
答案 0 :(得分:1)
您收到此错误,因为'FromJsonOverwrite'是Void,它不返回任何内容。将您的代码更新为:
JsonUtility.FromJsonOverwrite(json, _gameData);