将 Json.Net 添加到 Unity3D 项目
Posted
技术标签:
【中文标题】将 Json.Net 添加到 Unity3D 项目【英文标题】:Adding Json.Net to a Unity3D project 【发布时间】:2015-05-22 13:46:43 【问题描述】:我通过 NuGetpackage 将 Json.Net 库添加到 Visual Studio 2013 并为 NetFramework 4.5 安装了它。添加时我在 Visual Studio 中没有收到错误
using Newtonsoft.Json;
但在 Unity3D 5.0 中出现错误:
Assets/RobotController.cs(5,7):错误 CS0246:类型或命名空间 找不到名称“Newtonsoft”。你错过了一个使用 指令还是程序集引用?
我在我的包文件夹中查找了这个项目的 dll 文件,所以我不明白这个问题。谢谢帮忙。
【问题讨论】:
您尝试重建了吗? 尝试将 *.dll 放入 Assets/Plugins 文件夹中。 显然目标框架仍然是 3.5。在我选择了正确的 .dll 文件后,我在 Visual Studio 中重建项目时没有出现任何错误(当我选择了错误的一个时出现了几个警告)。如果我从 NET 3.5 的包文件夹中复制 .dll 文件,则会收到此错误:未处理的异常:System.Reflection.ReflectionTypeLoadException:无法加载模块中的类。在(包装器托管到本机)System.Reflection.Assembly:GetTypes (bool) 【参考方案1】:我在 Visual Studio 2015 中遇到了同样的问题。但 Utamaru 的解决方案对我有用。
创建一个文件夹:Assets/Plugins 放置 *.dll 文件并将其添加为参考。
要添加引用,请在 Visual Studio 的解决方案资源管理器中突出显示分析器,然后在项目 > 添加引用下,您可以通过浏览找到位于 Assets/Plugin 中的 *.dll 文件。
【讨论】:
我还必须重新启动 Unity。【参考方案2】:对于内置版本的支持,建议使用以下之一
Json.NET v13.0
github.com/jilleJr/Newtonsoft.Json-for-Unity
Json.NET v9.0
github.com/SaladLab/Json.Net.Unity3D
Json.NET v8.0
parentelement.com/assets/json_net_unity
Json.NET v7.0
nuget.org/packages/Unity.Newtonsoft.Json/
或者,如果您不需要 Newtonsoft.Json (Json.NET),这里有一些其他的替代方案 (所有都在 Unity 中工作,我省略了不需要的库,并且有很多'em):
OdinSerializer
github.com/TeamSirenix/odin-serializer
UTF8Json
github.com/neuecc/Utf8Json
FastJSON
assetstore.unity.com/packages/tools/input-management/fastjson-27220
UltimateJson
assetstore.unity.com/packages/tools/integration/ultimate-json-60845
SimpleJson
wiki.unity3d.com/index.php/SimpleJSON
LitJson
github.com/Mervill/UnityLitJson
FullSerializer
github.com/jacobdufault/fullserializer
protobuf-net
github.com/protobuf-net/protobuf-net
有很多糖果可供选择。 选择好年轻的学徒~
【讨论】:
Json.NET v12.0 github.com/jilleJr/Newtonsoft.Json-for-Unity
帮了我,谢谢!【参考方案3】:
我偶然发现了这个项目 https://github.com/SaladLab/Json.Net.Unity3D
Newtonsoft Json.NET 是 .NET 生态系统中事实上的标准 JSON 库。但是它不支持Unity3D,所以刚拿到Json.NET包后使用JSON.NET有点困难。此软件包适用于需要在 Unity3D 中使用最新 Json.NET 的 Unity3D 程序员。
只需导入 unity package 即可。
【讨论】:
【参考方案4】:使用 simpleJson。它是免费的,可以完成工作。
将 SimpleJSON.cs 内容复制到项目中新创建的文件中,然后就可以开始了。如果你想花哨 -> 在 assets\plugins 目录中创建这个新文件
http://wiki.unity3d.com/index.php/SimpleJSON
【讨论】:
这没有回答问题。【参考方案5】:您可以简单地使用 Asset Store 在 Store 中添加名为 JSON .NET For Unity 的绝妙 newtonsoft.JSON 库。
https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347
【讨论】:
【参考方案6】:Unity3D 的 JSON.NET 可在资产商店中获得; https://www.assetstore.unity3d.com/en/#!/content/11347
【讨论】:
但它需要 25 美元,而 NewtonSoft Json.net 通过 NuGet 是免费的! 是的,但通过 NuGet 免费提供的版本不兼容。因此,为什么在 Unity 商店中提供了另一个版本。不知道为什么我在这里被否决了。 它说是免费的,所以也许他们改变了它。 这不是答案。如果要插入产品,请至少解释为什么 nuget 包不兼容【参考方案7】:如果您通过 IDE 添加对 *.dll 的引用,并且在重新编译 IDE 后抛出,请检查您是否有程序集定义。如果是这样,您需要将其添加到程序集引用中。它对我有用。 Inspector
【讨论】:
【参考方案8】:您需要将 dll 添加到您的项目引用中。
参考 >> 添加参考。
【讨论】:
如果我这样做,我会收到消息,即已经存在对 Newtonsoft.json 的引用,并且 Newtonsoft 已经在引用列表中。以上是关于将 Json.Net 添加到 Unity3D 项目的主要内容,如果未能解决你的问题,请参考以下文章
将服务引用添加到引用了 JSON.NET 库的项目时出现奇怪的问题
如何使用 json.net 将 json 数组添加到 JObject 的属性中