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/8/4 18:29:20 阅读更多 →
分布式光伏与新能源电站智能运维应用

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

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

2026/8/4 18:29:20 阅读更多 →
九龙源漂流

九龙源漂流

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

2026/8/4 18:29:20 阅读更多 →

最新新闻

QQ空间记忆时光机:GetQzonehistory创新方案帮你找回消失的青春印记

QQ空间记忆时光机:GetQzonehistory创新方案帮你找回消失的青春印记

QQ空间记忆时光机:GetQzonehistory创新方案帮你找回消失的青春印记 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾试图找回那些在QQ空间里逐渐消失的青春记忆&…

2026/8/4 20:04:00 阅读更多 →
六网观察②|新型电网 5 万亿落子:当特高压遇上数字孪生,电网的“数字神经“怎么建

六网观察②|新型电网 5 万亿落子:当特高压遇上数字孪生,电网的“数字神经“怎么建

栏目:六网观察 数字孪生实战系列(第 2 篇 / 共 6 篇)关键词:新型电网、十五五规划、数字孪生电网、特高压、变电站数字孪生、虚拟电厂、空间智能、物理AI摘要:"十五五"期间新型电网投资超 5 万亿元&#xf…

2026/8/4 20:04:00 阅读更多 →
如何三步搞定Windows热键冲突:Hotkey Detective终极指南

如何三步搞定Windows热键冲突:Hotkey Detective终极指南

如何三步搞定Windows热键冲突:Hotkey Detective终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是不…

2026/8/4 20:04:00 阅读更多 →
值得关注的DevOps平台:技术团队都在用的优选方案

值得关注的DevOps平台:技术团队都在用的优选方案

值得关注的DevOps平台,是那些能在一体化能力、CI/CD效率、本土化支持、学习曲线、合规与安全五个维度上匹配团队现状的方案。据GlobeNewswire 2026年报告,全球DevOps市场2025年规模达198亿美元,复合年增长率为22.73%;IDC与中国信通…

2026/8/4 20:04:00 阅读更多 →
安卓虚拟机工具实测|虚拟大师3.2.66 全ROM版(支持安卓16、免Root)

安卓虚拟机工具实测|虚拟大师3.2.66 全ROM版(支持安卓16、免Root)

日常玩机、APP调试、应用多开时,很多人都不想通过刷机、Root真机的方式折腾手机,避免造成系统不稳定、数据丢失等问题。今天客观分享一款实用的安卓虚拟机工具——虚拟大师,新版本适配安卓16,无需真机Root,可独立运行虚…

2026/8/4 20:04:00 阅读更多 →
Unity帧率控制全解析:从原理到实战,优化性能与功耗

Unity帧率控制全解析:从原理到实战,优化性能与功耗

1. 项目概述:为什么Unity帧数上限不是个“小问题”在Unity项目开发中,尤其是涉及到性能优化和最终发布时,帧率(FPS)上限的设置往往是一个容易被忽视,但影响深远的关键环节。很多开发者,特别是刚…

2026/8/4 20:03:00 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →