接着相关资料1的内容出现的错误
读取方块数据为什么只能保存instanceID无法正常读取的数据
发现错误
发现与参考资料1的存储数据不一样。
当SaveData.json中已经保存了数据,当直接在Start函数中使用 loadJSONCubeDate();读取SaveData.json的数据的时候,发现不能产生正常的结果,无法读取数据的内容。
JSONDemon.cs
...
private void Start()
{
loadJSONCubeDate();
}
...
SaveData.json错误保存的数据
{"Items":[{"instanceID":151226},{"instanceID":151256},{"instanceID":151308}]}
当根据相关资料1的代码进行读取数据的时候
发现读取的数据无法显示,并且只有实体。
因为 相关资料1里面的内容,保存的就是 实体GameObject,而不是 数据本身字符串string、int等等,所以会出现错误。
解决错误

SaveData.json正确保存的数据
jsonStringZ:{
"Items":[
{
"position":{"x":-3.0,"y":0.7600000500679016,"z":-1.8700000047683716},
"quaternion":{"x":0.0,"y":0.9297260046005249,"z":-0.3682519793510437,"w":0.0},
"instanceID":151440,
"Name":"Cube_Red",
"Level":1,
"Stats":[]},
{"position":{"x":-0.9900000095367432,"y":0.7600000500679016,"z":-1.8700000047683716},
"quaternion":{"x":0.23644280433654786,"y":0.0,"z":0.0,"w":0.9716454148292542},
"instanceID":151470,
"Name":"Cube_Green",
"Level":2,
"Stats":[]},
{"position":{"x":0.75,"y":0.7600000500679016,"z":-1.8700000047683716},
"quaternion":{"x":0.27803176641464236,"y":-0.05573149770498276,"z":-0.1871250867843628,"w":0.9405192732810974},
"instanceID":151522,
"Name":"Cube_Blue",
"Level":3,
"Stats":[]}
]
}
最主要保存的数据为Test_JSONCube_,没有函数,没有继承MonoBehaviour
using UnityEngine;
[System.Serializable]//
public class Test_JSONCube : MonoBehaviour
{
...
}
[System.Serializable]
public class Test_JSONCube_
{
/// <summary>
/// world position
/// </summary>
public Vector3 position;
/// <summary>
/// rotation
/// </summary>
public Quaternion quaternion;
/// <summary>
/// 场景生成的固定的ID
/// </summary>
p

在尝试使用Unity结合JSONUtility进行数据存档时,遇到一个问题:保存的方块数据只有instanceID,导致无法正常读取。错误发生在Start函数调用loadJSONCubeDate()时,JSONDemon.cs中保存的数据格式不正确。解决方案是将保存的数据更改为Test_JSONCube类,避免包含函数和MonoBehaviour,以确保数据正确序列化和反序列化。
最低0.47元/天 解锁文章
2572





