在日常的网络应用/游戏开发中,我们经常需要在服务端和客户端之间做数据交互。比如以前很火的社交游戏《开心农场》,当你进入好友家查看对方的菜有没有成熟的时候,客户端就开始向服务端请求该好友家的信息。服务端收到请求后就会将该玩家的农场资料发回给客户端,并由客户端解析后显示在游戏界面上。而中间的“语言”我们称之为数据交互格式。
目前页游中比较流行的有XML/JSON/AMF等等,当然也可以自己实现一套序列化/反序列化的解决方案。但使用这些久经考验并且现成的格式,可以省下很多重复造轮子的精力和时间。JSON.Net是我用得比较顺手的JSON序列化/反序列库,它是开源的。点击这里可以进入它的官方页面并下载。在写这篇笔记的时候最新版本为4.5R10,支持
.Net2.0/3.5/4.0,还有Silverlight/WP/Win8。
下载成功后可以得到一个zip压缩包,里边包含了源代码(Source目录)和编译好的DLL(Bin目录),运行环境都已经按目录名分好了。这里有一点要注意,虽然Unity中使用.Net Framework 3.5作为工程的类库输出,但是不能使用Net35下面的DLL,而应该使用Net20下面的DLL。
所有由Unity引用的外部DLL,都必须放置在工程Assets/Plugins文件夹中(在Unity的工程面板中为Plugins目录),支持存放到子级文件夹。如左图所示,我在Plugins下面新建了一个Newtonsoft.Json的目录,并把DLL文件都扔进去。这样可以使得工程面板的目录结构更清晰一点,但并不是强制性的。
然后新建一个Test.cs脚本做测试,看看引用是否成功。别忘了脚本必须附加到场景上的某个物体上才会被调用。
using UnityEngine;
using Newtonsoft.Json;
public class TestData
{
public string PlayerName { get; set; }
public int Level { get; set; }
public int Exp { get; set; }
public override string ToString()
{
return string.Format("PlayerName={0},Level={1},Exp={2}", PlayerName, Level, Exp);
}
}
public class Test : MonoBehaviour
{
void Start()
{
var data = new TestData
{
PlayerName = "黄旭杨",
Level = 10,
Exp = 123,
};
var serializedData = JsonConvert.SerializeObject(data);
Debug.Log("Serialized:" + serializedData);
var deserializedData = JsonConvert.DeserializeObject<TestData>(serializedData);
Debug.Log("Deserialized:" + deserializedData);
}
}
▇ 实现效果
————————————————————————————————————————————————————
运行游戏后就会在控制台里打印出以上结果,可见Unity已经顺利地调用Json.Net序列化和反序列化对象了。
PS:写完这篇文章的时候试了下Newtonsoft.Json.Linq命名空间下面的JToken.Parse(),发现无法通过编译。原因是Unity默认是将API等级设置为.Net2.0 Subset,导致找不到需要的类。解决方法很简单,只要在主菜单中的File→Build Setting→Player Settings…→Other Setting→Api Compatibility Level设置为.Net 2.0即可。
分享到:
相关推荐
本教程主要讲解如何在Unity3D中引用第三方DLL来解析JSON,这里以JSON.Net库为例进行说明。 首先,JSON.Net是一个功能强大的开源JSON库,支持.NET Framework 2.0、3.5、4.0以及Silverlight、Windows Phone和Windows ...
在Unity中,如果需要在WebGL平台上使用JSON解析功能,可能需要使用Unity内置的JsonUtility类,或者使用第三方的JSON库,如Newtonsoft.Json(又名Json.NET),因为System.Web.Extensions可能不直接适用于WebGL环境。...
在IT行业中,C#是一种广泛应用于游戏开发、桌面应用、Web服务等领域的编程...在实际工作中,我们需要根据具体需求选择合适的Json序列化库和第三方.dll文件,确保它们与Unity的兼容性,并正确地在代码中进行引用和调用。
为了在Unity中解析和序列化JSON数据,开发者通常会使用第三方库,如 LitJson.dll 和 Newtonsoft.Json.dll。这两款库都是高效的JSON处理工具,能帮助开发者快速地将JSON字符串转化为C#对象,反之亦然。 LitJson.dll...
LitJson作为优秀的第三方库,是解析Json很好的工具,使用方便也小巧,可以在unity,godot,c#前后端使用。 简单来说,LitJson的用途是实现Json和代码数据之间的转换,得到返回的Json后进行转换从而在代码里可以轻松...
这个文件夹是Unity存放第三方库的地方。 3. **添加DLL**:将解压后的 "LitJson.dll" 文件拖放到刚创建的 "Plugins" 文件夹内。Unity会自动识别并导入这个库。 4. **使用LitJson**:现在,你可以在C#脚本中引入 ...
1. **Excel.dll**:这是一个可能封装了读写Excel文件功能的第三方库,它提供了API来访问Excel文件,例如创建、读取、修改工作表和单元格等。在Unity中,由于Unity自身不支持直接操作Excel文件,所以这类库非常有用。...
在Unity中,SimpleJSON库提供了一种简单、快速的方式来处理JSON数据,无需依赖额外的DLL或第三方库。 SimpleJSON库的主要优点包括: 1. **易用性**:SimpleJSON的API设计直观,开发者可以轻松地创建、读取和修改...
使用第三方库时,一定要确保其版本与Unity的版本兼容,否则可能会出现运行时错误。同时,处理JSON数据时应考虑到安全问题,避免注入攻击。 综上所述,`System.Json.dll`和`LitJson.dll`是Unity3D中处理JSON数据的...
在C#开发中,处理JSON数据通常需要依赖第三方库,而LitJson就是其中一种高效且易于使用的解决方案。 首先,让我们深入了解一下LitJson的工作原理。 LitJson主要提供两个关键类:JsonMapper和JsonData。JsonMapper是...
在Unity中,可以使用JsonUtility或者第三方库如Newtonsoft.Json来序列化和反序列化JSON数据。将数据保存为JSON文件,可以方便地在不同系统间共享,也可以作为游戏服务器与客户端之间的数据交互格式。 3. **图片创建...
在Unity项目中,`Plugins`文件夹是用来存放第三方库或特定平台的插件的。当你将ExcelToJson.zip中的文件解压并放入Unity项目的`Plugins`目录下,Unity会自动识别这些动态链接库(DLL)文件,并允许你在代码中引用和...
"newtonsoft.json.dll"是一款广泛使用的第三方JSON库,特别适用于Unity引擎,以提高JSON解析和序列化的效率和灵活性。它是由James Newton-King 开发的Json.NET的Unity版本,提供了对C#和.NET框架的全面JSON支持。 ...
Unity引擎本身并不直接内置强大的Socket通信功能,因此开发者通常需要借助第三方库来实现。HP Socket库就是这样一个解决方案,它为Unity提供了简单易用的API,方便开发者处理TCP和UDP通信。HPSocket4C.dll和HPSocket...
4. **LitJSON.dll**:这是一个轻量级的JSON(JavaScript Object Notation)解析器和生成器,用于将数据转换为JSON格式,方便在Unity和Excel之间交换数据。 在Unity中使用这些DLL时,你需要将它们导入到项目中,并...
这是一个内置工具,允许开发者方便地添加、管理和更新第三方库。它支持三种类型的包:本地、Git URL和Unity Registry。在本例中,我们将使用Git URL来添加`com.newtonsoft.json`包。 1. **添加Newtonsoft JSON库到...
Unity AB包资源提取是Unity3D游戏开发中的一个...AssetStudio作为第三方工具,为开发者提供了查看和提取AB包资源的能力,有助于理解和调试游戏资源。在实际应用中,合理运用这些知识可以显著提升游戏的性能和用户体验。
为了在Unity WebGL中读取Excel文件,我们可以利用第三方插件,如`FlexReader`。`FlexReader`是一个灵活的数据读取工具,它为Unity提供了读取CSV、Excel等格式数据的能力。在Unity WebGL项目中,你需要将`FlexReader`...
在Unity引擎中,读取Word文档通常涉及到使用第三方库来处理Office文档的解析与操作。在您提供的文件列表中,我们可以看到几个关键的DLL文件,它们是用于处理Microsoft Office文件格式的库,如NPOI和EPPlus。下面将...
《Unity安卓平台开发中的LitJson.dll:解析JSON数据的关键组件》 在Unity游戏开发中,尤其是在安卓平台上,数据交换和序列化是不可或...同时,了解如何正确集成和使用这种第三方库,也是提升Unity开发技能的重要一环。