加入Plastic SCM后Newtonsoft.Json.dll出现问题

加入Plastic SCM后Newtonsoft.Json.dll出现问题

​ 前阵子自己新开了个人项目,由于是新项目,所以想什么东西都用最新的。所以,版本控制这块我使用了Unity官方推出的Plastic SCM。
​ 一开始安装这个插件了,没啥毛病,使用起来也还算OK。但是随着项目代码越堆越多,嗯,问题出现了。

​ 由于我使用到了强大的 Newtonsoft.json库。把它加入工程后,前几天用着没啥毛病,能正常使用,但后来我在编辑器部分的代码里使用到了这个库时,引用了Newtonsoft.json命名空间,发现问题出来了,Unity一直报错:

请添加图片描述

工程里Newtonsoft.json存在了倆。这让我莫名其妙了,定位之下,发现Plastic SCM 这个包里也有个Newtonsoft.json库:

请添加图片描述

好家伙!你还给人家改了个名字,#¥%@#¥,好歹你也改下命名空间呀……你这还藏了个大惊喜!好吧,那我认了,谁叫我用你的东西咧

既然你是铁了心用的了,那我就想想怎么解决咯。由于之前我在非编辑器代码里没问题,可能是因为SCM包里的Json库本身就仅Editor模式运行,而我们写的编辑器部分代码,在引用时,便引用了SCM包里的这个库了……无语……

请添加图片描述

目前我的解决方案:

方案1:

​ 删除原有的库,拷贝Plastic SCM里的到工程,以保持两个dll的版本一致:

​ 1、删除工程里我们自己引用的Json库

​ 2、右键找到Plastic SCM里的Json库的物理路径:

请添加图片描述

请添加图片描述

3、找到它并复制它到我们工程的Plugins目录下,并修改其名字为:Newtonsoft.Json.dll

请添加图片描述

4、再进入工程,等待编译完成即可

方案2:

​ 不删除自己放到工程里的json库,保留它和Plastic SCM共存,但对代码文件的物理路径的存放位置有要求,因为要用到.asmdef。

​ 1、整理好我们编辑器部分的代码,在代码的相对根目录下,创建一个asmdef文件(程序集定义文件):

请添加图片描述

​ 例如我的项目里,我在做一个关卡编辑器,所以我把关卡编辑器的代码都整理到了一个LevelMaker/Scripts目录下,然后在LevelMaker目录下右键创建了asmdef:

请添加图片描述

关于整理代码这块,如果你前期在目录规划上做的好的话,这个应该没什么问题。至于一个asmdef文件囊括多少代码,这个看项目情况,有的项目细粒度会大点。而关于编辑器部分的代码,我一般都会喜欢按每个工具来做划分。

2、创建.asmdef文件后,Unity会把我们编辑器代码括起来,最终编译成一个独立的dll。在这里要勾选.asmdef的设置里的Override Reference选项,会出现Assembly References设置项:

请添加图片描述

3、点积+号增加一个引用,选择我们需要指定引用的dll文件,Apply之后等待编译即可

请添加图片描述

请添加图片描述

4、最后别忘了勾选下设置里的平台选项,不然在发布时编译会出现问题……

请添加图片描述

方案3:

​ 这个方法不推荐,因为我也没用过。只是想到的……

​ 把Plastic SCM单独拷出来,不受PackagesManager维护,放到Plugins目录下,我们就可以对其为所欲为了……比如把它所引用到的Json库替换成我们自己的……嗯,这个听起来和方案1有点像……事实上unity对它所引用的json库也做了修改的……

​ 我不推荐吧,毕竟PackagesManager维护挺香的,有什么版本迭代也能尽快更新到……毕竟,Plastic SCM也仅仅是个工具而已……

方案4:

​ 找到 Json 库源码,改改之后,自己编译自己的 Json 库……嗯……
Newtonsoft.Json库源码:https://github.com/JamesNK/Newtonsoft.Json

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity2019是一款非常流行的游戏开发引擎,而Newtonsoft.Json.dll是一个非常常用的Json处理库。Newtonsoft.Json.dll可以帮助我们在Unity2019中进行Json数据的序列化和反序列化操作。 在Unity2019中,使用Newtonsoft.Json.dll可以非常方便地将对象转换为Json格式的字符串,或者将Json格式的字符串转换为对象。这对于网络通信、存储数据或者配置文件的读写等场景非常有用。 使用Newtonsoft.Json.dll进行序列化时,我们可以使用一些属性来控制Json的生成方式,比如可以指定属性的命名规则、设置日期格式化方式、对空值进行处理等等。这些属性可以帮助我们更好地控制和优化Json数据的生成过程。 在反序列化方面,使用Newtonsoft.Json.dll可以帮助我们将Json格式的字符串快速地转换为对应的对象。我们可以使用一些特性来指定如何解析Json数据,比如可以使用JsonProperty来指定Json字段与对象属性之间的映射关系。 除了基本的序列化和反序列化功能之外,Newtonsoft.Json.dll还提供了一些高级功能,比如将对象序列化为Xml格式、处理动态类型、处理匿名类型等等。这些功能可以帮助我们更加灵活地处理Json数据。 总之,Unity2019中使用Newtonsoft.Json.dll可以帮助我们方便地进行Json数据的处理,节省了我们自己编写Json解析代码的时间和精力,提高了开发效率。它是Unity开发中不可或缺的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值