Unity supports native plug-ins for Android written in C/C++ and packaged in a shared library (.so) or a static library (.a). When using the IL2CPP scripting backend, you can use C/C++ source files as plug-ins and Unity compiles them along with IL2CPP generated files. This includes all C/C++ source files with extensions .c, .cc, .cpp and .h.
To build a C++ plug-in for Android, use the Android NDK and get yourself familiar with the steps required to build a shared library. The same applies to static libraries.
If you are using C++ to implement the plug-in, you must ensure the methods are declared with C linkage to avoid name mangling issues. By default, only the C source files that have a .c file extension in the plug-ins have C linkage (not C++).
extern "C" {
float Foopluginmethod ();
}
Después de compilar la biblioteca, copie los archivos .so de salida en el directorio Assets / Plugins / Android en su proyecto de Unity. En el Inspector, marque sus archivos .so como compatibles con Android y configure la arquitectura de CPU requerida en el cuadro desplegable:
Para llamar a los métodos en su plug-in nativo desde sus scripts C #, use el siguiente código:
[DllImport ("pluginName")]
private static extern float Foopluginmethod();
Tenga en cuenta que pluginName no debe incluir el prefijo (‘lib’) o la extensión (‘.so’) del nombre del archivo. Se recomienda ajustar todas las llamadas al método nativo de plug-in con una capa de código C # adicional. Este código comprueba [Application.platform](../ScriptReference/ Application-platform.html) y llama a métodos nativos solo cuando la aplicación se ejecuta en el dispositivo real; los valores ficticios se devuelven desde el código C # cuando se ejecuta en el Editor. Use plataforma define para controlar la compilación de código dependiente de la plataforma.
When you use C/C++ source files as plug-ins, you call them from C# in the same way except that you use __Internal
for plug-in name, for example:
[DllImport ("__Internal")]
private static extern float Foopluginmethod();
The AndroidNativePlugin.unitypackage zip file contains a simple example of a native code plug-in distributed as Unity package.
The sample shows how to invoke C++ code from a Unity application. The package includes a scene which displays the sum of two values as calculated by the native plug-in. To compile the plug-in must install the Android NDK.
To install the sample: