To call and implement native Universal Windows Platform (UWP) plug-ins, you need to know how to create native plug-ins for Unity. For more information about native plug-ins and their uses, refer to Native plug-ins.
IL2CPP scripting backend supports the P/Invoke mechanism for native plug-ins. This means that you can call into native plug-ins directly from your C# code. To do this, you specify the native function prototype and then call it.
The following examples show you how to implement a native plug-in and call it from a C# script.
Create a new .cpp file in your Unity project and insert the following native plug-in code:
extern "C" __declspec(dllexport)
int __stdcall CountLettersInString(wchar_t* str)
{
int length = 0;
while (*str++ != nullptr)
length++;
return length;
}
Create a new C# script and replace its contents with the following code:
[DllImport("MyPlugin.dll")]
private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);
private void Start()
{
Debug.Log(CountLettersInString("Hello, native plug-in!"));
}
Add the component to a GameObject in your scene and enter Play mode. The console will print 22.
using UnityEngine;
public class ExamplePlugin : MonoBehaviour
{
[DllImport("MyPlugin.dll")]
private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);
private void Start()
{
Debug.Log(CountLettersInString("Hello, native plug-in!"));
}
}