Esta página describe los Plugins de Código Nativo para la plataforma iOS.
Defina su método externo en el archivo C# como sigue:
[DllImport ("__Internal")]
private static extern float FooPluginFunction();
Set the editor to the iOS build target.
Add your native code source files to the generated Xcode project’s Classes folder (this folder is not overwritten when the project is updated, but don’t forget to backup your native code).
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");
This function has three parameters: the name of the target GameObject, the script method to call on that object and the message string to pass to the called method.
Limitaciones conocidas:
function MethodName(message:string)
Unity iOS supports automated plugin integration in a limited way. All files with extensions .a,.m,.mm,.c,.cpp located in the Assets\Plugins\iOS folder will be merged into the generated Xcode project automatically. However, merging is done by symlinking files from Assets\Plugins\iOS to the final destination, which might affect some workflows. The .h files are not included in the Xcode project tree, but they appear on the destination file system, thus allowing compilation of .m/.mm/.c/.cpp files.
Note: Subfolders are currently not supported.
Un ejemplo simple del uso de un plugin en código nativo puede ser encontrado aquí
This sample demonstrates how objective-C code can be invoked from a Unity iOS application. This application implements a very simple Bonjour client. The application consists of a Unity iOS project (Plugins\Bonjour.cs is the C# interface to the native code, while BonjourTest.cs is the script that implements the application logic) and native code (Assets\Code) that should be added to the built Xcode project.