【问题标题】:Adding Json.Net to a Unity3D project将 Json.Net 添加到 Unity3D 项目
【发布时间】: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)

标签: c# json visual-studio unity3d


【解决方案1】:

我在 Visual Studio 2015 中遇到了同样的问题。但 Utamaru 的解决方案对我有用。

创建一个文件夹:Assets/Plugins 放置 *.dll 文件并将其添加为参考。

要添加引用,请在 Visual Studio 的解决方案资源管理器中突出显示分析器,然后在项目 > 添加引用下,您可以通过浏览找到位于 Assets/Plugin 中的 *.dll 文件。

【讨论】:

  • 我还必须重新启动 Unity。
【解决方案2】:

对于内置版本的支持,建议使用以下之一

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

有很多糖果可供选择。 选择好年轻的学徒~

【讨论】:

  • 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 已经在引用列表中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多