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

Universal Windows Platform: Plugins on .NET Scripting Backend

Universal Windows Platform plug-in settings

To view these settings, go to the Unity Editor’s Project Window, select the plug-in file, then in the Inspector window navigate to Platform settings > Universal Windows Platform (the Windows icon).

Universal Windows Platform plug-in settings
Universal Windows Platform plug-in settings
Свойство: Функция:
SDK Use the drop-down to make the plug-in compatible with Any SDK or specific SDKs.
CPU Use the drop-down to make the plug-in compatible with Any CPU, or limit the plug-in to 32-bit, 64-bit or ARM players.
Don’t process
(Only applies for managed assemblies)
Tick this checkbox to disable patching for this assembly. Assemblies need patching when they contain classes serializable by Unity. In these cases, Unity injects additional IL code into the assemblies. If you know the assemblies doesn’t have these classes, then it’s safe to disable patching.
Note: Unity injects serialization code into your assemblies, so if you have a class derived from MonoBehaviour in your plug-in, and Unity doesn’t patch it, you might get a serialization error during runtime.
Placeholder
(Only applies for managed assemblies)
With Universal Windows Platform you can have plug-ins compiled against .NET Core, but because the Unity Editor runs on Mono, it fails to recognize these assemblies. As a result, C# or JS files can’t reference them. To work around this, you need to provide an assembly compiled against .NET 3.5 with identical API, which acts as a placeholder for the real plugin (see next section, Placeholder plug-ins).

See documentation on the Plugin Inspector for more information.

Placeholder plug-ins

You cannot use Universal Windows Platform-specific plugins in the Unity Editor if you use Windows Runtime APIs. This section describes how the to handle this in the Unity Editor.

If you only intend to use the plugin for Universal Windows Platform, and not in the Unity Editor, you don’t need to make a placeholder, but you do need to wrap the code which uses the plugin API with the following:

#if !UNITY_EDITOR
// Plugin code
#endif

If you intend to use the plugin for both Universal Windows Platform and the Unity Editor, you need a placeholder. Make two plugins:

  • For Universal Windows Platform, an assembly plug-in compiled against .NET Core with Windows Runtime API inside.
  • For the Unity Editor, an assembly plug-in compiled against .NET 3.5, which has identical public API with dummy function implementations (this is the placeholder).

Both plug-ins must share the same name and have the same assembly version. Note that the placeholder plugin for the Unity Editor cannot reference UnityEditor.dll. if it does, Unity generates an error.

The steps below describe how to assign a platform to each in the Editor.

  1. In the Unity Editor’s Project window, select your Editor-compatible placeholder plug-in. In the Inspector window, go to Select platforms for plugin and select Editor as the only compatible platform.

  2. In the Unity Editor’s Project window, select your Universal Windows Platform-compatible placeholder plug-in. In the Inspector window, go to Select platforms for plugin and select Universal Windows Platform as the only compatible platform.

  3. In the Inspector window for the Universal Windows Platform-compatible plug-in, set the Placeholder field to your Editor-compatible placeholder plug-in.

This means that when building to Universal Windows Platform, Unity uses Editor-compatible placeholder plug-in when compiling your scripts, but copies the Universal Windows Platform-compatible plug-in to the final folder. This achieves two things: The Unity Editor successfully compiles your scripts, but the built game itself still uses the API from the Universal Windows Platform-specific plug-in.


• 2017–05–16 Page amended with limited editorial review

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