Esta página describe los Plugins de Código Nativo para la plataforma iOS.
[DllImport ("__Internal")]
private static extern float FooPluginFunction();
Si usted está utilizando C++ (.cpp) o Objective-C++ (.mm) para implementar el plugin usted deber asegurarse que las funciones son declaradas con C linkage para evitar name mangling issues.
extern "C" {
float FooPluginFunction();
}
Los Plugins escritos en C u Objective-C no necesitan esto ya que estos lenguajes no utilizan el name-mangling.
Los plugins nativos de iOS pueden ser llamados solamente cuando sean desplegados en el dispositivo actual, por lo que es recomendado envolver todos los métodos de código nativo con una capa de código adicional de C#. Este código debería revisar Application.platform y llamar métodos nativos solamente cuando la aplicación está corriendo en el dispositivo; valores ficticios pueden ser devueltos cuando la aplicación corre en el Editor. Vea la muestra de la aplicación del navegador Bonjour para un ejemplo:
El Unity iOS soporta de manera limitada una funcionalidad de llamadas nativas vía UnitySendMessage:
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
Esta función tiene tres parámetros : el nombre del GameObject objetivo, el método script a ser llamado en ese objeto y el string de mensaje en ser pasado para el método llamado.
Limitaciones conocidas:
function MethodName(message:string)
El Unity iOS soporta una integración de plugin automatizada en una manera limitada. Todos los archivos con extensiones de .a,.m,.mm,.c,.cpp ubicadas en la carpeta Assets/Plugins/iOS serán fusionada al proyecto Xcode generado de manera automática. Sin embargo, la fusión es hecha haciendo symlink en los archivos delAssets/Plugins/iOS al destino fina, lo cual puede afectar algunos flujos de trabajo. Los archivos .h no son incluidos en el árbol del proyecto de Xcode, pero aparecen el sistema de archivos destino, por lo tanto le permite la compilación de archivos .m/.mm/.c/.cpp .
Tenga en cuenta: las sub-carpetas no son actualmente soportadas.
Un ejemplo simple del uso de un plugin en código nativo puede ser encontrado aquí
Este ejemplo demuestra como código objective-C puede ser invocado desde una aplicación Unity iOS. Esta aplicación implementa un cliente Bonjour simple. La aplicación consiste de un proyecto del Unity iOS (Plugins/Bonjour.cs es la interfaz C# al código nativo, mientras BonjourTest.js es el script JS que implementa la lógica de la aplicación) y código nativo (Assets/Code) que debería ser agregado al proyecto XCode construido.