到目前为止我发现了什么
我正在使用 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/