You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发3D游戏时JSON文件保存失败问题求助

解决Unity JSON保存异常的方案

1. 修复PlayerStatus类的序列化标记

Unity的JsonUtility要求被序列化的类必须添加[Serializable]特性,否则无法完成序列化操作。修改你的PlayerStatus类:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; // 引入该命名空间以使用Serializable特性

[Serializable] // 必须添加此标记
public class PlayerStatus
{
    public int level;
    public int hp;
    public int attack;
    public int defence;
    public int speed;
}

2. 确认status变量已正确初始化

如果status变量为null,序列化会直接失败。在脚本的初始化方法中完成实例化:

private PlayerStatus status;

void Awake()
{
    status = new PlayerStatus();
    // 可在此处设置初始值,例如status.level = 1;
}

3. 检查SaveJson方法的实现逻辑

如果Managers.Save.SaveJson是自定义方法,需确保实现逻辑无问题,以下是标准的JSON保存实现参考:

public class SaveManager
{
    public void SaveJson<T>(T data) where T : class
    {
        // 使用Unity官方推荐的持久化路径,避免权限问题
        string path = Application.persistentDataPath + "/playerStatus.json";
        string json = JsonUtility.ToJson(data, prettyPrint: true);
        
        try
        {
            System.IO.File.WriteAllText(path, json);
            Debug.Log("保存成功,路径:" + path);
        }
        catch(System.Exception e)
        {
            Debug.LogError("保存失败:" + e.Message);
        }
    }
}

核心注意点:

  • 必须使用Application.persistentDataPath作为保存路径,该路径跨平台兼容且拥有写入权限。
  • 添加异常捕获,打印具体错误信息,便于定位问题。
  • 验证JsonUtility.ToJson返回值,若data无法序列化会返回空字符串。

4. 验证触发逻辑中的status状态

在保存前打印status的字段值,确认数据有效:

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("WarpPoint"))
    {
        Debug.Log($"当前状态:等级{status.level},HP{status.hp}");
        Managers.Save.SaveJson<PlayerStatus>(status);
    }
}

若日志显示status字段值正常但保存失败,问题大概率出在SaveJson方法的实现上。

5. 检查平台权限(移动端)

如果在Android/iOS测试,需确保应用拥有文件写入权限:

  • Android:在AndroidManifest.xml中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />(Android 10+使用persistentDataPath可避开分区存储限制)。
  • iOS:在Info.plist中添加NSDocumentsFolderUsageDescription,说明应用访问文档目录的原因。

内容的提问来源于stack exchange,提问作者Elsam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:20:19