Unity3D - 我可以使用 .NET 4.5 程序集作为外部库吗?

Posted

技术标签:

【中文标题】Unity3D - 我可以使用 .NET 4.5 程序集作为外部库吗?【英文标题】:Unity3D - can I use .NET 4.5 assembly as external library? 【发布时间】:2014-01-09 07:40:22 【问题描述】:

我想使用在 .NET Framework v4.5 中实现的一组功能。因为 Unity3D 在 Mono 运行时(相当于 .NET 3.5)上工作,我认为使用 .NET4.5 程序集作为外部插件。

有可能吗?如果可能,该库将使用哪个运行时 - Mono 或程序集的目标运行时(在我的情况下为 .NET 4.5)?

【问题讨论】:

【参考方案1】:

据我所知,你不能,因为 unity 在单声道上运行。看看这里http://docs.unity3d.com/410/Documentation/ScriptReference/MonoCompatibility.html

基本上,Unity 升级到 .NET 3.5 或更高版本,具有一些类似于 c# 4.0 的功能,例如可选参数。

要记住的主要一点是,尽管您在构建设置中看到了什么,但 Unity3d 并未使用 .NET 2.0。

编辑 2:

我在某处看到您绝对不能直接引用 4.5 程序集。现在找不到资源了。

无论如何,我想有可能制作一个调用 4.5 程序集的 C++ 包装器。问题是即使你编写了一个以这种方式工作的包装器,它也只能在 Windows 机器上工作。基本上是因为单声道无法在任何其他平台上支持它们。再次在理论上。

免责声明:单声道支持部分只是一个有根据的猜测。我不是 100% 的。

编辑: 这也是一本好书What are the correct version numbers for C#?

【讨论】:

我知道 Unity3D 的默认运行时 (Mono)。根据 Unity 文档,我说的是使用 .NET 4.5 程序集作为 external 库:“Unity 广泛支持插件,这些插件是用 C、C++、Objective 编写的本机代码库-C 等。插件允许您的游戏代码(用 javascript、C# 或 Boo 编写)调用这些库中的函数。此功能允许 Unity 与中间件库或现有 C/C++ 游戏代码集成。"跨度> @lewis 在他的解释中提到。您不能引用需要更高版本的托管库。网络支持比安装。 @lewis 这不是重点。你安装了什么并不重要。 Unity 的运行时无法支持。 这取决于目标机器是什么以及是否可以安装 .NET 4.5 CLR。如果目标机器是 iPhone 或 android 手机,那么我怀疑不是。如果目标机器只包含台式机或笔记本电脑上的 Windows 操作系统,那么我认为使用插件访问 .NET 4.5 CLR 没有问题。 假设如果您用 C# 编写插件并将其构建为 DLL,那么 Unity 将加载 DLL 并尝试针对 Mono 解决它。但也许(正如@Alex 在他的回答中所说)你可以在 C++ 中构建一个桥接插件,它初始化平台的 .NET 运行时,并加载 .NET DLL。不过,这只适用于 Windows。

以上是关于Unity3D - 我可以使用 .NET 4.5 程序集作为外部库吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 Windows Identity Foundation 3.5 与 .NET 4.5 一起使用吗?

如何使用 Mono 在 XSP 上运行 .NET 4.5?

并行运行两个异步任务并在 .NET 4.5 中收集结果

同步使用漂亮的 .net 4.5 HttpClient 的最佳方式

是否有与 .net 4.5 一起使用的类似于 hawkeye 的 UI 检查器工具?

可以从 Team Foundation Server 2010 构建代理运行 .NET 4.5 代码分析吗?