[Unity][存档][JSONUnity]读取方块数据为什么只能保存instanceID

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着相关资料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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值