c# - 防止 Unity 抛出有关需要专业版才能使用我未使用的特定功能的构建错误

标签 c# android unity-game-engine

到目前为止我发现了什么
我正在使用 C# 和 Unity 制作一个简单的游戏。当我尝试为 Android 构建此游戏时,出现此错误:

Error building Player: SystemException: 'System.Net.Sockets' are supported only with Unity Android Pro. Referenced from assembly 'Mono.Data.Tds'.

这就是说,我需要购买 Android Pro 许可证才能构建一个使用 System.Net.Sockets 的游戏。起初这让我感到困惑,因为我根本不记得使用过 System.Net.Sockets。经过一些研究后,我发现 using 扩大了 Unity C# 项目的范围会导致此错误,在我的例子中,我正在这样做:

using System;

通过代理包括 System.Net.Sockets 让 Unity 认为我正在使用它。


问题
我现在在我的游戏中使用一些开源库。当我在实现这些库后去为 Android 构建时,我遇到了同样的错误。然后我继续查看这些库的源代码,它在作者所做的每个文件中进行了接缝:

using System;

这是第一部分错误的原因。这些库也不使用 System.Net.Sockets,但 using 的范围很广。


问题
有什么方法可以让 Unity 认识到我实际上并没有使用 System.Net.Sockets 所以它不会让我购买 Android Pro?


编辑
按照@Roberto 的建议,我删除了我所有的库,然后开始重新添加它们,直到出现错误。我已经确定 Json.NET是罪魁祸首,正在用 System.Net.Sockets 做一些事情。但是,当我在源代码中搜索“System.Net.Sockets”或 “Mono.Data.Tds”时,没有任何结果。

最佳答案

这是不对的,添加 using System 不会扩展到 System.Net.Sockets。没有多大意义,否则几乎所有游戏都不可能在 Unity 免费上运行。

问题是您的代码或插件正在使用 System.Net.Sockets。它可能是一个库 (dll),但肯定有东西在使用它。

您可以通过使用 using System 使用一个脚本创建一个新项目来测试我的说法,看看您不会遇到问题;此外,您可能想要创建一个新项目并逐渐添加您正在使用的插件,以检查哪个插件正在使用 System.Net.Sockets


我刚刚读到这发生在 Unity 3.5.6 上。你用的是这个版本吗?如果是这样,您不能更新到 Unity 4 吗?我正在使用 Unity 4,我没有遇到这个问题。还有 3.5.7 可以试试。

关于c# - 防止 Unity 抛出有关需要专业版才能使用我未使用的特定功能的构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25151818/

相关文章:

c# - ASP.NET WebAPI 的哪一部分负责将动态解析为 JObject

c# - 如何用零删除 StringBuilder 内存

java - R.string 不显示我在 res/values/strings.xml 中手动定义的字符串

testing - Unity游戏在线beta测试平台

c# - Mysqli 到 php 到 c#

c# - 可以中止 MVC 操作并保持 View 不变(无需重写 View 的 GET "load code")?

c# - 使用 MSTest 属性

android - TableRow 的单个子级不会延伸到 match_parent

java - 如何定期调用 asyncTasks

c# - 如何检查物体是否在移动