Version: 2018.4
Managed plug-ins
Building plug-ins for desktop platforms

Native plug-ins

Unity has extensive support for native plug-ins, which are libraries of native code written in C, C++, Objective-C, etc. Plug-ins allow your game code (written in Javascript or C#) to call functions from these libraries. This feature allows Unity to integrate with middleware libraries or existing C/C++ game code.

In order to use a native plug-in you firstly need to write functions in a C-based language to access whatever features you need and compile them into a library. In Unity, you will also need to create a C# script which calls functions in the native library.

The native plug-in should provide a simple C interface which the C# script then exposes to other user scripts. It is also possible for Unity to call functions exported by the native plug-in when certain low-level rendering events happen (for example, when a graphics device is created), see the Native plug-in interface page for details.

Ejemplo

Una librería simple nativa con una sola función podría tener código fuente que se ve así:

    float FooPluginFunction () { return 5.0F; }

Parra acceder este código dentro de Unity, usted puede utilizar código como el siguiente:

    using UnityEngine;
        using System.Runtime.InteropServices;

        class SomeScript : MonoBehaviour {

           #if UNITY_IPHONE
   
           // On iOS plugins are statically linked into
           // the executable, so we have to use __Internal as the
           // library name.
           [DllImport ("__Internal")]

           #else

           // Other platforms load plugins dynamically, so pass the name
           // of the plugin's dynamic library.
           [DllImport ("PluginName")]
    
           #endif

           private static extern float FooPluginFunction ();

           void Awake () {
              // Calls the FooPluginFunction inside the plugin
              // And prints 5 to the console
              print (FooPluginFunction ());
           }
        }

Note that when using Javascript you will need to use the following syntax, where DLLName is the name of the plug-in you have written, or “__Internal” if you are writing statically linked native code:

    @DllImport (DLLName)
        static private function FooPluginFunction () : float {};

Creating a native plug-in

In general, plug-ins are built with native code compilers on the target platform. Since plug-in functions use a C-based call interface, you must avoid name mangling issues when using C++ or Objective-C.

Más Información

Managed plug-ins
Building plug-ins for desktop platforms