Extendiendo el código Java UnityPlayerActivity
Using Java or Kotlin source files as plug-ins

Plug-ins #Native (C ++) para Android

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:

Configuración de importación de plug-in nativo (C ++) como se muestra en la ventana Inspector
Configuración de importación de plug-in nativo (C ++) como se muestra en la ventana Inspector

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();

Muestra de plug-in Nativo (C++)

Este [archivo zip] (../ uploads / Examples / AndroidNativePlugin.zip) contiene un ejemplo simple de un complemento de código nativo. Este ejemplo demuestra cómo se invoca el código C ++ desde una aplicación Unity. El paquete incluye una escena que muestra la suma de dos valores calculados por el plug-in nativo. Necesitará el Android NDK para compilar el complemento.



  • 2018–03–10 Page published with limited editorial review

  • Updated features in 5.5

  • Support for using C++ source files and static libraries as plug-ins on Android added in 2018.2 NewIn20182

Extendiendo el código Java UnityPlayerActivity
Using Java or Kotlin source files as plug-ins