На этой странице описан нативный код плагинов для платформы iOS.
1 Определите внешний метод в файле C# следующим образом:
````
[DllImport ("__Internal")]
private static extern float FooPluginFunction();
````
If you are using C++ (.cpp) or Objective-C++ (.mm) to implement the plugin you must ensure the functions are declared with C linkage to avoid name mangling issues.
extern "C" {
float FooPluginFunction();
}
Для плагинов, написанных на C или Objective-C, это не требуется, так как эти языки не используют name-mangling.
Нативные плагины iOS могут быть вызваны только на реальном устройстве, поэтому рекомендуется обернуть все нативные методы кода дополнительным слоем C#-кода. Этот код должен проверить Application.platformи вызывать собственные методы только тогда, когда приложение работает на реальном устройстве; фиктивные значения могут быть возвращены из С#-кода при работе в редакторе. Для примера посмотрите приложение Bonjour.
Unity IOS поддерживает ограниченную функциональность колбэков от нативного к управляемому коду через 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.
Известные ограничения:
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.
Простой пример использования нативного кода плагина можно найти здесь
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.