Version: 2018.4
Universal Windows Platform: Missing .NET Types on .NET Scripting Backend
Universal Windows Platform: Debugging on .NET Scripting Backend

通用 Windows 平台:.NET 脚本后端上的插件

通用 Windows 平台插件设置

要查看这些设置,请转到 Unity Editor 的 Project 窗口,选择插件文件,然后在 Inspector 窗口中导航到 Platform settings > __Universal Windows Platform__(Windows 图标)。

通用 Windows 平台插件设置
通用 Windows 平台插件设置
属性: 功能:
SDK 使用下拉选单使插件与 Any SDK 或特定 SDK 兼容。
CPU 使用下拉选单使插件与 Any CPU 兼容,或将插件限制为 32-bit64-bitARM 播放器。
Don’t process
(仅适用于托管程序集)
勾选此复选框可禁用此程序集的修补。当程序集包含 Unity 可序列化的类时,程序集需要修补。在这些情况下,Unity 会在程序集内注入额外的 IL 代码。如果您知道程序集没有这些类,那么禁用修补是安全的。
注意:Unity 会将序列化代码注入到程序集内,因此如果插件中有一个派生自 MonoBehaviour 的类,而 Unity 不对其进行修补,则可能会在运行时出现序列化错误。
Placeholder
(仅适用于托管程序集)
使用通用 Windows 平台的情况下,可根据 .NET Core 编译插件,但由于 Unity Editor 在 Mono 上运行,因此无法识别这些程序集。导致的结果是 C# 文件无法引用它们。为解决此问题,需提供根据 .NET 4.x 进行编译并具有相同 API 的程序集,它将充当真实插件的占位插件(请参阅下一部分:_占位插件_)。

请参阅有关 Plugin Inspector 的文档以了解更多信息。

占位插件

如果使用 Windows 运行时 API,则无法在 Unity Editor 中使用特定于通用 Windows 平台的插件。本部分将介绍如何在 Unity Editor 中处理此问题。

如果只打算对通用 Windows 平台使用插件而不在 Unity Editor 中使用插件,则不需要创建占位插件,但需要使用以下语句对使用插件 API 的代码进行包装:

# if !UNITY_EDITOR
// 插件代码
# endif

如果打算将插件同时用于通用 Windows 平台和 Unity Editor,则需要占位插件。创建两个插件:

  • 对于通用 Windows 平台,创建一个根据 .NET Core 进行编译的程序集插件,它具有内置的 Windows 运行时 API。
  • 对于 Unity Editor,创建一个根据 .NET 4.5 进行编译的程序集插件,它具有相同的公共 API 并采用虚函数实现(这是占位插件)。

这两个插件必须共享相同的名称并具有相同的程序集版本。请注意,Unity Editor 的占位插件不能引用 UnityEditor.dll。如果进行此引用,Unity 会产生错误。

以下步骤描述了如何在 Editor 中为每个插件分配平台。

  1. 在 Unity Editor 的 Project 窗口中,选择与 Editor 兼容的占位插件。在 Inspector 窗口中,选择 Select platforms for plugin__,并选择 Editor__ 作为唯一兼容的平台。

  2. 在 Unity Editor 的 Project 窗口中,选择与通用 Windows 平台兼容的占位插件。在 Inspector 窗口中,选择 Select platforms for plugin__,并选择 Universal Windows Platform__ 作为唯一兼容的平台。

  3. 在与通用 Windows 平台兼容的插件的 Inspector 窗口中,将 Placeholder 字段设置为与 Editor 兼容的占位插件。

这意味着在进行以通用 Windows 平台为目标的构建时,Unity 在编译脚本时使用与 Editor 兼容的占位插件,而将与通用 Windows 平台兼容的插件复制到最终文件夹。这种机制实现了两个目的:Unity Editor 成功编译脚本,但构建的游戏本身仍然使用通用 Windows 平台特有插件中的 API。


  • • 2018–08–03 页面已修订并只进行了有限的编辑审查

  • 在 2018.3 版中已弃用 .NET 3.5 脚本运行时

Universal Windows Platform: Missing .NET Types on .NET Scripting Backend
Universal Windows Platform: Debugging on .NET Scripting Backend