Unity-基于JsonUtility的Json文件读写
前言在 Unity 开发中配置存档、参数、UI 状态、参数保存几乎都离不开 JSON 读写。Unity 自带JsonUtility原生、轻量、跨平台、打包无报错、零依赖。本篇给大家一套全网最简、可直接商用的 JSON 读写模板包含✅ 单数据读写✅ List 列表读写✅ 通用工具类全局一行调用✅ 所有坑点完整避坑✅ 适配编辑器 打包 Windows/安卓一、核心原理必看1. 核心 APIJsonUtility.ToJson()对象转 JSON 字符串保存JsonUtility.FromJson()JSON 字符串转对象读取2. 三条铁律99%报错的原因数据类必须加[Serializable]字段必须是public原生不支持直接 数组/List 顶层 JSON需要包装类二、最简完整代码可直接复制使用1. 数据模型类示例PLC配置using System; /// summary /// 可序列化的JSON数据模型 /// /summary [Serializable] public class PlcConfigData { public string Ip; public int Rack; public int Slot; public float Speed; public bool IsConnected; }2. 通用 JSON 工具类全局通用静态工具类项目放任意位置整项目通用。using UnityEngine; using System.IO; /// summary /// Unity 原生JSON读写工具类 /// /summary public static class JsonTool { /// summary /// 保存数据到JSON文件 /// /summary public static void SaveJsonT(T data, string path) { string json JsonUtility.ToJson(data, prettyPrint: true); File.WriteAllText(path, json); Debug.Log($JSON保存成功{path}); } /// summary /// 读取JSON文件 /// /summary public static T LoadJsonT(string path) { if (!File.Exists(path)) { Debug.LogWarning(JSON文件不存在); return default; } string json File.ReadAllText(path); return JsonUtility.FromJsonT(json); } }3. 调用示例一行保存、一行读取using UnityEngine; using System.IO; public class JsonTest : MonoBehaviour { // 持久化路径编辑器 打包通用 private string SavePath Path.Combine(Application.persistentDataPath, plcConfig.json); void Start() { // 1. 构造测试数据 PlcConfigData data new PlcConfigData() { Ip 192.168.0.1, Rack 0, Slot 1, Speed 35.5f, IsConnected false }; // 2. 保存JSON JsonTool.SaveJson(data, SavePath); // 3. 读取JSON PlcConfigData load JsonTool.LoadJsonPlcConfigData(SavePath); if (load ! null) { Debug.Log(读取IP load.Ip); Debug.Log(读取速度 load.Speed); } } }保存示例读取示例注意在Unity中脚本要能拖拽到游戏对象上需满足继承自MonoBehaviour这一硬性条件而要在Inspector中拖拽赋值字段则需要该字段为public或标记[SerializeField]。三、List/数组 列表数据读写高频需求重点坑Unity Json 不支持直接序列化 List 顶层对象解决方案外层套一个包装类1. 列表包装类using System; using System.Collections.Generic; [Serializable] public class DataListWrapper { public ListPlcConfigData DataList; }2. 列表保存读取示例using System.Collections.Generic; using System.IO; using UnityEngine; public class JsonTest : MonoBehaviour { // 持久化路径编辑器 打包通用 private string SavePath Path.Combine(Application.persistentDataPath, plcConfigList.json); void Start() { // 保存列表 DataListWrapper wrap new DataListWrapper(); wrap.DataList new ListPlcConfigData(); wrap.DataList.Add(new PlcConfigData() { Ip 192.168.0.2, Rack 0, Slot 2 }); JsonTool.SaveJson(wrap, SavePath); // 读取列表 DataListWrapper loadWrap JsonTool.LoadJsonDataListWrapper(SavePath); if (loadWrap ! null) { foreach (var item in loadWrap.DataList) { Debug.Log(item.Ip); } } } }保存示例读取示例四、JSON 文件位置在哪里编辑器路径C:\Users\你的用户名\AppData\LocalLow\公司名\项目名\AppData 是隐藏文件夹直接粘贴地址回车即可打开。五、全网最齐全的踩坑总结1. 类没有加 [Serializable]现象生成空 JSON{}读取全部为空、不报错解决必须加序列化特性2. 字段写成 private私有字段无法序列化JSON 不显示3. 保存立刻读取偶尔读不到磁盘写入延迟解决方案协程延迟读取4. 不能直接存 Dictionary原生不支持字典需要用 List 替代或 Newtonsoft.Json5. 不要用 dataPath 存档dataPath打包后只读必须用persistentDataPath六、优缺点总结✅ 优点零插件、原生自带跨平台 Windows / Android / IOS速度快、轻量、无冲突工业仿真、PLC项目、工具项目完全够用❌ 缺点不支持顶层数组不支持 Dictionary结语90% 的 Unity 存档、配置需求原生 JsonUtility 完全够用不需要第三方插件。本文这套工具类是最简、最稳通用模板。

相关新闻

C++中static关键字的本质解析与应用实践

C++中static关键字的本质解析与应用实践

1. Static关键字的本质解析 在C编程中,static关键字可能是最容易被误解却又无处不在的核心概念之一。我第一次真正理解static是在调试一个多线程日志系统时——当时发现不同线程的计数器莫名其妙地互相干扰,直到导师指着那个缺失的static说:&…

2026/10/16 17:12:43 阅读更多 →
分布式光伏与新能源电站智能运维应用

分布式光伏与新能源电站智能运维应用

分布式光伏、户用光伏及工商业光伏电站数量多、分布散、设备杂,逆变器、汇流箱、电表、气象站等设备品牌不一、通信协议各异。传统人工巡检运维模式无法实时掌握发电数据、设备故障与组件衰减状态,普遍面临发电效率不明、故障排查滞后、运维成本高企、收…

2026/10/18 21:43:13 阅读更多 →
九龙源漂流

九龙源漂流

盛夏的暑气缠在山林间,还是抵挡不住出门玩的心。自己都佩服自己顶着大太阳出门带娃去游玩漂流。坐着方舟魔毯缓缓上山,沿途古木参天,浓荫叠翠,清风穿过幽深峡谷,捎来山间独有的草木清香,稍稍吹散了心头的燥…

2026/10/18 15:27:14 阅读更多 →

最新新闻

2026年教育培训SaaS系统怎么选?从评价维度到避坑指南全解析

2026年教育培训SaaS系统怎么选?从评价维度到避坑指南全解析

第一次被培训机构老板问“哪家SaaS系统排名高”的时候,我记得很清楚,那是2018年,一个做少儿艺术培训的朋友拿着三份报价单来找我对比。那时候大家比的还是谁家的功能模块多、谁家的App长得好看。到了2026年,这个问题不但没变简单&…

2026/10/20 12:06:01 阅读更多 →
KECA核熵成分分析:训练测试集分离与数据泄漏避坑实践

KECA核熵成分分析:训练测试集分离与数据泄漏避坑实践

简介:这是一份面向非线性高维数据降维的KECA(核熵成分分析)MATLAB程序,适用于机器学习、模式识别及特征提取场景,尤其针对Q9A等需要核熵分析的实验问题。KECA结合核方法与熵理论,将数据映射到高维特征空间后…

2026/10/20 12:06:01 阅读更多 →
Kafka 2.8.0生产者消费者原生实现与高可用配置详解

Kafka 2.8.0生产者消费者原生实现与高可用配置详解

1. 项目概述:为什么一个“简单实现”值得花时间深挖?Kafka集群(2.8.0版本)之四:Java简单实现生产者和消费者——这个标题看起来平平无奇,甚至有点“教科书感”。但在我过去十年带团队落地消息中间件的实战中…

2026/10/20 12:06:01 阅读更多 →
MATLAB数据分析与挖掘实战:数据预处理、特征工程与建模避坑指南

MATLAB数据分析与挖掘实战:数据预处理、特征工程与建模避坑指南

简介:MATLAB数据分析与挖掘实战完整教程整合了配套源码、说明文档与真实数据集,面向工科生、数学专业及算法方向学习者,可系统演练数据导入、清洗、建模、评估与结果分析的完整链路,帮助理解数据挖掘中常用的预处理思路和建模方法…

2026/10/20 12:06:01 阅读更多 →
无GPU也能跑大模型:银河麒麟V10离线部署DeepSeek-R1全流程

无GPU也能跑大模型:银河麒麟V10离线部署DeepSeek-R1全流程

简介:面向银河麒麟V10操作系统技术人员的一份DeepSeek离线部署操作指南,重点解决在内网或无互联网环境下安装ollama大语言模型服务及chatbox客户端的问题。资源为单个docx文档,约2.69MB,内容涵盖系统环境与硬件检查、ollama解压安…

2026/10/20 12:06:01 阅读更多 →
KSyntaxHighlighting编译指南:解决KF6依赖与CMake构建链问题

KSyntaxHighlighting编译指南:解决KF6依赖与CMake构建链问题

1. 项目概述:为什么一个语法高亮库的编译会卡住你一整天?“编译 KSyntaxHighlighting 的过程中遇到的一些问题”——这个标题看起来平平无奇,甚至有点枯燥,但它背后藏着的是无数 C 跨平台开发者的共同记忆:一个看似轻量…

2026/10/20 12:05:01 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →