位置: 编程技术 - 正文

[置顶] Unity使用JsonFX插件进行序列化([置顶]电影名字《收件人不详》)

编辑:rootadmin

推荐整理分享[置顶] Unity使用JsonFX插件进行序列化([置顶]电影名字《收件人不详》),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]游戏名:chivalry2,[置顶]公主大人接下来是拷问时间31,[置顶]bilinovel,[置顶]公主大人接下来是拷问时间31,[置顶]电影名字《收件人不详》,[置顶]电影名字《收件人不详》,[置顶]JM259194,[置顶]bilinovel,内容如对您有帮助,希望把文章链接给更多的朋友!

孙广东 .6.

Unity and JSON – Quick Guide:

相比较XML的沉重和密集,Json更加高效。

Introduction:

什么是 Json ?如果你从未使用过它,它的内部是字典结构。但你进行序列化和反序列化一些数据之后,你就会想知道他是怎么工作的。

Unity没有为 JSON 提供内置的解决方案。

获得Dark Table的 JsonFX:

Dark Table 已经创建了Unity中的解决方案, JsonFx. 你能得到 DLL 在这, if you want to follow along.

下载它,并且拖拽到Unity项目中,放到Plugins文件中。

Our Data Classes:来自 JsonFx zip 文件中的readme 自述文件,里面有支持的数据类型的列表。我们会把它当作简单一些基元和数组 — — 只是为了演示功能。我已经创建了几个用于此示例中的类。我们有一个叫做的 DataPC的类,这是我们要为我们的Player Controller存储的信息。还有提到的类名是 DataName 序列化的类。

我把这些作为数据类,因为他们的目的是要我的 JSON 文件,不是实际的类。换句话说,我也许会有一个类调用 PC 来处理游戏中的功能,但是我简单的 DataPC 类可以帮助存储和检索 json 格式的数据。这不需要通过任何手段。

我创建的第二类是 DataItem 类,存储特定item的数据。

在这里我们变得有点花哨: 我创建了一个 DataItem 数组来存储多个items。

Serializing the Data:接下来,我已经成立了一个类,处理序列化和反序列化。:

首先要注意的是我们需要包括 JsonFx 库: using JsonFx.Json接下来,我们创建的 DataPC 的一个新实例并初始化其值。我们给它两个Items存入数组,初始化每个。

在 OnGUI() 方法中。

我们这里在做什么? 将类序列化为 Json 并成一个字符串保存该 Json。一旦我们有字符串,我们打印出来到debug log。

此方法的一个小问题是它生成 JSON 是一行的,没有排版结构的换行等。无格式。这意味着有大量的数据时它是有点难读的,但你可以把这个Copy到您选择的文本编辑器,你也可以使用一个基于 web 的工具来做这种。这将格式设置为、并验证 Json。

JSON De/Serialization Using Unity and JsonFx:

目的: 序列化数据的目的是使它可以存储或在不同的系统或甚至应用程序之间共享。它创建一个共同的数据模板,可以来回转换 (序列化和反序列化) 甚至当源数据是不被认为是由接收的系统或应用程序本身。有可以使用的各种常见格式 (即 XML,CSV,二进制文件中,或在我们的例子,JSON)、 序列化到数据。

在我们的示例中,我们要创建一个类,在我们的应用程序中; 当我们创建它的实例时,它将存在于内存中直到我们摧毁它或停止应用程序。一旦我们在 unity 编辑器 (或关闭我们build生成中的窗口)关闭播放play模式,该数据就丢失了。通过序列化,在这种情况下内容到一个文本文件,使用 JSON,我们可以将其存储到文件系统中,不仅我们可以脱机编辑和查看更改反映在我们的应用程序,当我们再次加载它。

Download the JsonFx DLL: here

步骤 1: 创建容器容器是一个类用来在内存中存储您正在使用的数据。这不是唯一的方式做到这一点,但因为你读了我的向导,我的容器直接使用 C# 类。我们有:

[置顶]
        Unity使用JsonFX插件进行序列化([置顶]电影名字《收件人不详》)

Sandwich.cs

只是注意字段都是public的,这一点很重要! 此外,[System.Serializable] 能为我们做两件事: 它允许 JsonFx 要序列化的字段,并且它还暴露在UNity的inspector面板上,将这些字段。很简单,对吧?好吧,让我们继续前进。

第 2 步: 序列化 (Saving/Writing) 数据将从代码中入手,然后我将解释。JsonTutorial.cs

第一件事情就是包括 JsonFx dll 就像这样:

当然了具体的命名空间要根据DLL而定,如果你能够找到另一个版本的 dll,您将通过适当的命名空间 (即 JsonFx.Json)。第二,我们包括 System.IO。这是因为我们会读取和写入文件。我会简单地填写字段通过Inspectors。以便您稍后可以看到的输出。

没有必要给它扩展,因为你会注意到在 SerializeAndSave() 方法,我们给它一个自动化 (虽然你可以随时修改代码,以做到)。

接下来的几个字段也只是我们早些时候在容器中定义。string data = JsonWriter.Serialize(sandwich);

那一行,就在那里处理序列化到一个文件中对sandwich对象。JsonFx 为我们处理繁重的工作。你可以 Debug.Log(data),看看它的样子,但我们要把它写到一个文件中无论如何,所以让我们继续。

下几行简单的核对是否我们指定的目录PATH路径存在,并且如果不存在就创建它。请注意,默认情况下,Application.dataPath 是项目的 /Assets 目录。我已经写到它下了,所以我只是去一个目录 (......),并将保存到一个目录中我 MyProject/ (这样, /Assets,基本上)。

StreamWriter 构造函数实际上采用的全路径,包括文件名。再次,你可以简单地省去手动添加".txt"扩展名,并让用户填写文件名变量,但随便。你将能够在文本编辑器中打开该文件,即使你没有给它的扩展。

测试它!只是作为一个组件在任何场景中,拖拽 JsonTutorial 脚本,你会看到一个“SAVE”按钮 (记住 OnGUI )。单击按钮,并检查您的project 文件夹。能看到/testData 路径,无论名字是什么在 Inspectors 中 (在我的例子 my_data.txt) 中设置的文件,您应该看到一个 /testData 目录中。基于我设计的sandwich,该文件将包含以下 JSON 作为文本 :

我们可以甚至交换的东西有点通过提供它的 sandwiches 而不是只是一个列表。让我们创建一个简单的容器来存放列表sandwiches(这项工作,因为你无法反序列化List<Sandwiches> 直接要求。

In Sandwich.cs

相反,你 Sandwich 变量,创建一个新的Sandwich 依次包含List<Sandwich> 根据我们的容器。只是别忘了更改 JsonWriter.Serialize(sandwich);到 JsonWriter.Serialize(sandwiches);在inspector中,添加一些 sandwiches 运行它,并查看你得到什么。

Step 3: Loading and Deserializing做最难的部分,我们已经有我们需要的一切,所以剩下的就是创建一个方法来加载数据和一个按钮来调用该方法。这里是我们的方法:In JsonTutorial.cs

它看起来类似于我们的 SerializeAndSave() 方法,但是我们通过阅读做在这儿的对面 (废话)。与 StreamWriter相反,我们正在使用 StreamReader与JsonWriter.Serialize相反,我们使用的 JsonReader.Deserialize。你会注意到的语法是有点不同,在这里,因为我们的读者需要知道什么类型要反序列化 (在本例中,Sandwiches ),和你通过它要反序列化,它是字符串的数据我们从回来我们 StreamReader。

步骤 4: 测试它......再一次!最终代码JsonTutorial.cs

Sandwich.cs

学习JsonFX 的地方:

版权声明:本文为博主原创文章,未经博主允许不得转载。

遍历所有子物体的方法 遍历活跃的子物体TransformGetTransform(Transformcheck,stringname){foreach(Transformtincheck.GetComponentsInChildrenTransform()){if(t.name==name){returnt;}GetTransform(t,name);}returnnull;}版

Unity性能优化 优化:版权声明:本文为博主原创文章,未经博主允许不得转载。

[置顶] Unity ----- 对象池GameObjectPool 孙广东.6.很早之前看到的外国文章,觉得不错,分享一下,对象池在AssetStore中也是有很多插件的,但是有些重了,自己写一个轻量的岂不是很好。

标签: [置顶]电影名字《收件人不详》

本文链接地址:https://www.jiuchutong.com/biancheng/369231.html 转载请保留说明!

上一篇:Unity Socket TCP

下一篇:遍历所有子物体的方法(遍历enumeration)

  • 一般纳税人每个月需要报哪些税
  • 进项税额转出借方科目
  • 消费税和所得税的关系
  • 科普一下发票知识
  • 送货单和收据单的区别
  • 人工费怎么入账
  • 税务局登录账号是多少
  • 小规模补交去年的所得税资产负债表怎么调整
  • 企业报废固定资产的净损失应确认为企业的费用
  • 购买增值税专用发票罪
  • 防伪税控开票系统技术维护费
  • 简易计税的销项税怎么处理
  • 车间管理人员的工资属于
  • 只有税控盘没有报税盘
  • 小规模纳税人网上申报税务操作流程
  • 营改增成功案例
  • 机械设备增值税税率
  • 环保税和环境税一样吗
  • 一般纳税人以清包工方式
  • 发票已抵扣未入账
  • 利息如何做会计分录
  • 抵押,质押,留置的区别与联系
  • msmpeng.exe是什么进程
  • linux不能联网怎么解决
  • dir852迅雷路由器
  • 记账凭证不见了怎么办
  • 原始凭证的内容有哪些
  • 基建借款属于什么科目
  • 当月购进固定资产
  • form表单使用
  • 企业向个人提供咨询服务
  • c++ 每日十问3-处理数据
  • 老生常谈PHP 文件写入和读取(必看篇)
  • 企业的存货按照计划成本核算,期初
  • 加工劳务费会计分录
  • 座头鲸救人
  • Win11 Build 25336 预览版发布:Snap 窗口新增最近 20 个标签选项
  • 2022年终总结
  • 营改增小规模纳税人可以进项税额扣除对吗
  • 检测命令
  • 购买的服务怎么做账
  • 进项税大于销项税怎么结转
  • 委托代销受托方会计分录
  • ps中如何使用切片工具
  • 善意取得增值税专用发票
  • 工伤医疗费必须要交吗
  • 房地产企业增值税预征率
  • 一般纳税人收到的普票可以抵扣吗
  • 未达账项审计调账怎么办
  • 合伙企业费用汇总表
  • 银行账户收到养老金怎么办
  • 本月只有进项税没有销项税需要结转吗
  • 现金支出业务的流程步骤包括
  • 健全的财务会计制度承诺函
  • sqlserver全文检索
  • linux进程的概念
  • sqlservr.exe - sqlservr是什么进程 有什么作用
  • win8.1使用教程
  • windows10磁盘100%占用解决
  • 为什么window10容易发热
  • win7如何更改欢迎界面
  • 如何搭建环境变量
  • JQuery 又谈ajax局部刷新
  • 利用python读取文件
  • pip工具安装
  • 编写折半查找的程序
  • javascript基于什么的语言
  • js类的使用
  • php和python有什么区别
  • js数组操作方法
  • python 类的用法
  • 置顶怎么折叠起来
  • unity游戏加密
  • javascript.
  • 如何网上申领税票发票
  • 个体户增值税怎么计算方法
  • 京东商城发票查询
  • 国家税务总局多少员工
  • 关于切实加强建筑施工领域安全防范工作
  • 开票风险预警机制黄色预警严重吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设