Version: 2021.3
Native plug-ins
Low-level native plug-in interface


Plug-ins for desktop platforms are libraries of native code you can write in C, C++ and Objective C. This page describes plug-ins for macOS, Windows, and Linux. For more information see Native plug-ins.

macOS plug-ins

You can deploy macOS plug-ins as bundles or, if you are using the IL2CPP scripting backend, loose C++ files, which you can invoke with [DllImport("__Internal")] syntax. For further information on loose C++ plug-ins see C++ source code plugins for IL2CPP.

To create the bundle project with XCode:

  1. Open XCode.
  2. Select File > New > Project > macOS > Framework & Library > Bundle.

For more information about working with XCode see Apple’s documentation on XCode.


  • You can build your plug-in as a universal binary that is compatible with 64-bit architectures. Alternatively, you can provide separate dylib files.
  • If you are using C++ (.cpp) or Objective-C (.mm) to implement the plug-in, declare the functions with C linkage to avoid name mangling issues:
extern "C"
  float ExamplePluginFunction ();

Windows plug-ins

Plug-ins on Windows are either .dll files with exported functions, or loose C++ files if you are using IL2CPP. You can use most languages and development environments that can create .dll files to create plug-ins. You must declare any C++ functions with C linkage to avoid name mangling issues.

Linux plug-ins

Plug-ins on Linux are .so files with exported functions. Although these libraries are usually in C or C++, you can use any language. You must declare any C++ functions with C linkage to avoid name mangling issues.

管理 Unity 中的插件

In Unity, the Plugin Inspector manages your plug-ins. To access the Plugin Inspector, select a plug-in file in the Project window. For Standalone platforms you can choose the CPU architecture with which the library is compatible. For cross platform plug-ins you must include the .bundle file (for macOS), the .dll file(for Windows), and the .so file (for Linux). Unity automatically picks the right plug-in for the target platform and includes it with the player. For further information see Import and configure plug-ins.

Plugin Inspector
Plugin Inspector

Invoking your plug-in from a C# script

Place your built plug-in in the Assets folder or the appropriate architecture-specific sub-directory in your Unity Project. Unity then finds it by name when you invoke it from a C# script. For example: [DllImport ("PluginName")] private static extern float ExamplePluginFunction ();

Note: PluginName should not include the library prefix or file extension (for example, the actual name of the plug-in file is PluginName.dll on Windows and on Linux).


You can download and use these projects to learn how to implement plug-ins in Unity.

  • Simplest Plugin Example: This project implements basic operations (for example, print a number, print a string, add two floats and add two integers). This project includes Windows, macOS and Linux project files.
  • Native Renderer Plugin: This is a low-level rendering plugin that renders a rotating triangle from C++ code after all regular rendering is done and fills a procedural texture from C++ code, using Texture.GetNativeTexturePtr to access it. This project includes Windows, UWP, macOS, WebGL and Android files.
Native plug-ins
Low-level native plug-in interface