包含此页的版本:
不含此页的版本:
Unity 支持两个不同的 .NET API 兼容性级别,您的项目代码可以根据这些级别进行编译。选择的兼容性级别决定了哪些 .NET 类库可用于 C# 代码。可用级别包括:
若要更改 .NET 配置文件,请执行以下作:
PlayerSettings.SetAPICompatibilityLevel.通常,对于所有新项目,首选 .NET Standard 而不是 .NET Framework,原因如下:
例如,如果需要为较旧的现有应用程序提供支持,则 .NET Framework API 兼容性级别可能很有用。
托管插件使用 Visual Studio 等工具创建的托管 .NET 程序集,用于 Unity 中。更多信息
请参阅术语表是在 Unity 外部管理并编译为动态链接库 (DLL) 的 .NET 程序集。您可以使用托管插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表与任一可用的 API 兼容性级别。但是,支持级别因编译托管插件所依据的 API 级别而异。由于 .NET Framework API 图面大于 .NET Standard,因此,如果项目面向 .NET Standard,则它可能不支持针对 .NET Framework 编译的所有插件。下表显示了 Unity 支持的配置:
| 托管插件编译目标 | .NET 标准 2.1 | .NET 框架 4.x |
|---|---|---|
| .NET Standard(任何版本) | 支持 | 支持 |
| .NET Framework(任何版本) | 支持有限 | 支持 |
| .NET Core(任何版本) | 不支持 | 不支持 |
仅使用已在各种 Unity 配置和平台上广泛测试的第三方 .NET 库。
这单声道Unity 中使用的脚本后端。更多信息
请参阅术语表脚本后端的实时 (JIT) 编译支持在应用程序运行时生成动态 C#/.NET 中间语言 (IL) 代码。这IL2CPP Unity 开发的脚本后端,在为某些平台构建项目时,可以将其用作 Mono 的替代方案。更多信息
请参阅术语表脚本后端的提前 (AOT) 编译不支持动态代码生成。
使用第三方库时,请务必考虑这一点,因为它们可能具有不同的 JIT 代码路径和AOT编译提前(AOT)编译是除iOS之外的所有平台都用来优化构建播放器大小的优化方法。 。更多信息
请参阅术语表,或者它们可能使用依赖于动态生成代码的代码路径。有关如何在运行时生成代码的更多信息,请参阅 Microsoft 的 ModuleBuilder 文档。
第三方库中 JIT 和 AOT 代码路径的性能特征可能显着不同。AOT 通常会减少启动时间,因此适合较大的应用程序,但会增加二进制文件大小以适应编译的代码。AOT 在开发过程中也需要更长的时间来构建。
JIT 会根据运行它的平台在运行时进行调整,这可以提高运行时性能,但代价是应用程序启动时间可能会更长。因此,建议在编辑器和目标平台上分析你的应用程序。有关更多信息,请参阅 Profiler 概述。
查看第三方库时,请考虑以下方面:
Unity 支持许多平台,并且可能会使用不同的脚本后端在Unity 中为脚本提供支持的框架。Unity 支持三种不同的脚本后端,具体取决于目标平台:Mono、.NET 和 IL2CPP。但是,通用 Windows 平台仅支持两个:.NET 和 IL2CPP。更多信息
请参阅术语表取决于平台。.NET 中的库System在某些情况下,命名空间需要特定于平台的实现才能正常工作。虽然 Unity 试图尽可能多地支持 .NET 生态系统,但 .NET 的某些部分SystemUnity 明确不支持的库:
System跨 Unity 版本的库。System图书馆。System.Drawing库,并且不保证它可以在所有平台上运行。提示: 分析 .NET System 库在所有目标平台上的使用情况,因为它们的性能特征可能会因脚本后端、.NET 版本和您使用的 API 兼容性级别而异。
这UnityWebRequestAPI 和所有 .NET Framework Web API 在除 Web 之外的所有平台上完全支持 TLS 1.2。Web 平台使用运行应用程序的浏览器和 Web 服务器中的安全设置。特定于平台的本地证书存储会自动验证 TLS 证书(如果可用)。如果无法访问证书存储,Unity 会使用嵌入式根证书存储。