查看: 100|回复: 6

【开发踩坑】Unity 导入 Newtonsoft Json Package 的版本问题

[复制链接]

4

主题

8

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2023-7-17 21:02:53 | 显示全部楼层 |阅读模式
最近在用 Unity 开发实验室项目,Socket 通信需要以 Json 格式来进行,所以使用了主流 Json 序列化 / 反序列化库 Newtonsoft Json(又名 http://Json.Net),然后就发现这里面的坑是真的多,然后中文互联网上相关的信息也太少了(基本为 0)......
我问了 chatGPT,在 stack overflow 上也没找到解决办法,最后还是在 Unity 自家论坛上找到了开发人员和 Unity 官方的扯皮...... 总而言之解决方法很暴力很神奇,只能说 Unity 的包管理工具真的要好好改改了。
所以,这是一个踩坑教程!不仅适用于 Newtonsoft Json,还基本适用于大部分的 Unity 依赖项版本问题......
我的 Unity 大版本是 2021.3,大家可以根据自己的 Unity 版本情况,来自行 debug ......

一、Unity 自带 Newtonsoft Json

在 2021.3 Unity 版本中,其实是自带 Newtonsoft Json 的,但这并不意味着这能够满足我们的需求!因为这个 Newtonsoft Json 版本低到离谱,实际上只有 3.0.2,然而最新的大版本已经是 13 了...... 这就导致有很多很好用的特性基本不能用(例如 Json 的 DefaultValue 在 3.0.2 版本是无法设置的)



Unity 自带的 Newtonsoft Json



这个版本低的离谱

二、下载 http://Json.Net

去这个官网   
下载最新版本的 http://Json.Net,然后对照自己的 .Net 版本,选一个 dll(我的 Unity 基于 .Net2.0,所以我选了下图的版本)



选取合适的版本

三、导入 http://Json.Net

这一步操作只能说极其神奇,Unity 中右键这个 Package,找到其目录,然后把 http://Json.Net 对应目录下的文件全部复制并覆盖到 Runtime 和 AOT 中去!



右键进入 Package 目录



把当前文件目录下的所有东西



复制并覆盖到这两个地方来

然后,我们就能用一系列高版本的功能了(比如图中 12.0.1 才能用的 DefaultValue)!



终于能用了

四、结语

论坛上从 20 年开始争论到了 23 年 3 月...... 只能说体验上来说不如 NPM / Yarn / Nuget ...... 既然提供了默认的包,就把版本管理也好好弄一下吧......
回复

使用道具 举报

3

主题

11

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2023-7-17 21:03:41 | 显示全部楼层
Unity自带的Newtonsoft Json的版本号是跟它本身是的版本号不同的,比如unity的Newtonsoft json3.0.2实际上是13.0.1的Newtonsoft.json,这些信息可以在https://docs.unity3d.com/Packages/com.unity.nuget.newtonsoft-json@3.1/changelog/CHANGELOG.html找到
回复

使用道具 举报

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-7-17 21:04:34 | 显示全部楼层
原来是这样,那这我用起来应该没什么问题才对…………可是我在替换之前很多特性都用不了
回复

使用道具 举报

6

主题

15

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2023-7-17 21:04:41 | 显示全部楼层
非常感谢!
回复

使用道具 举报

3

主题

11

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2023-7-17 21:05:31 | 显示全部楼层
为啥我没找到自带的,我的package cache里面没有这个包,都是重新引入[飙泪笑]
回复

使用道具 举报

3

主题

12

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-7-17 21:06:27 | 显示全部楼层
神奇,Unity 就是这么神奇......
回复

使用道具 举报

0

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-7-17 21:06:46 | 显示全部楼层
可能是因为版本比较老,我的2020.3没有 但是2021.3有
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表