将 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.0github.com/jilleJr/Newtonsoft.Json-for-Unity Json.NET v9.0github.com/SaladLab/Json.Net.Unity3D Json.NET v8.0parentelement.com/assets/json_net_unity Json.NET v7.0nuget.org/packages/Unity.Newtonsoft.Json/

或者,如果您不需要 Newtonsoft.Json (Json.NET),这里有一些其他的替代方案 (所有都在 Unity 中工作,我省略了不需要的库,并且有很多'em):

OdinSerializergithub.com/TeamSirenix/odin-serializer UTF8Jsongithub.com/neuecc/Utf8Json FastJSONassetstore.unity.com/packages/tools/input-management/fastjson-27220 UltimateJsonassetstore.unity.com/packages/tools/integration/ultimate-json-60845 SimpleJsonwiki.unity3d.com/index.php/SimpleJSON LitJsongithub.com/Mervill/UnityLitJson FullSerializergithub.com/jacobdufault/fullserializer protobuf-netgithub.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 属性添加到 Json.net 数组

如何使用 json.net 将 json 数组添加到 JObject 的属性中

如何将 Dictionary<string,string> 添加到现有 JSON.Net 的 JObject?

unity3d项目怎样发布才能通过网页访问

如何添加AdMob广告到现有的Unity3D ios游戏