c# - 为什么 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 派生的类中,我如何从我的游戏中访问这些字段?
解决方案
您收到此错误,因为“FromJsonOverwrite”是无效的,它不返回任何内容。将您的代码更新为:
JsonUtility.FromJsonOverwrite(json, _gameData);
推荐阅读
- python - 页面上未修改的 Django ModelForm 小部件
- javascript - 从动态输入字段中获取单个输入值
- javascript - 如何使用 javascript 在 iframe 中获取控制台消息?
- javascript - 如何使用时间间隔从服务器获取数据而不刷新角度组件中的页面?
- javascript - 如何刷新 node.js HTTP 服务器中的浏览器页面?
- sql - PLS-00382:表达式类型错误。PL/SQL:语句被忽略
- javascript - 在 Spring 中创建条目会引发不受支持的媒体类型
- java - Hibernate Spring Framework Transactional No Transaction In Progress
- python - 从其他脚本访问主函数中的变量
- python - 使用谷歌金融抓取实时股票价格