Version: 2018.3 (switch to 2019.1a or 2017.4)
Universal Windows Platform: Missing .NET Types on .NET Scripting Backend
Universal Windows Platform: Debugging on .NET Scripting Backend
Other Versions

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 PlatformAn IAP feature that supports Microsoft’s In App Purchase simulator, which allows you to test IAP purchase flows on devices before publishing your application. More info
See in Glossary
(the Windows icon).

Universal Windows Platform plug-in settings
Universal Windows Platform plug-in settings
Property: Function:
SDK Use the drop-down to make the plug-inA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
See in Glossary
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# files can’t reference them. To work around this, you need to provide an assembly compiled against .NET 4.x 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 4.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 InspectorA Unity window that displays information about the currently selected GameObject, Asset or Project Settings, alowing you to inspect and edit the values. More info
    See in Glossary
    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 scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary
, 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.


  • • 2018–08–03 Page amended with limited editorial review

  • .NET 3.5 scripting runtime deprecated in 2018.3

Did you find this page useful? Please give it a rating:

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