На этой странице описан нативный код плагинов для платформы iOS.
1 Определите внешний метод в файле C# следующим образом:
[DllImport ("__Internal")]
private static extern float FooPluginFunction();
Если вы используете плагин, реализованный на C++ (.cpp) или Objective-C++ (.mm), то вы должны убедиться, что функции объявлены с C-связями, чтобы избежать проблем с коверканьем имён.
extern "C" {
float FooPluginFunction();
}
Для плагинов, написанных на C или Objective-C, это не требуется, так как эти языки не используют name-mangling.
Нативные плагины iOS могут быть вызваны только на реальном устройстве, поэтому рекомендуется обернуть все нативные методы кода дополнительным слоем C#-кода. Этот код должен проверить Application.platformи вызывать собственные методы только тогда, когда приложение работает на реальном устройстве; фиктивные значения могут быть возвращены из С#-кода при работе в редакторе. Для примера посмотрите приложение Bonjour.
Unity IOS поддерживает ограниченную функциональность колбэков от нативного к управляемому коду через UnitySendMessage:
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
Эта функция имеет три параметра: имя целевого GameObject, метод скрипта для вызова на этом объекте и строки сообщения, передаваемой вызываемому методу.
Известные ограничения:
function MethodName(message:string)
Unity iOS поддерживает автоматическую интеграцию плагина в ограниченном виде. Все файлы с расширениями .a,.m,.mm,.c,.cpp, расположенные в папке Assets/Plugins/iOS будут добавлены в генерируемый проект Xcode автоматически. Тем не менее, слияние осуществляется через файлы символических ссылок из Assets/Plugins/iOS в конечный пункт назначения, который может влиять на некоторые рабочие процессы. Файлы .h не включаются в дерево проекта Xcode, но они добавляются в файловую систему, что позволяет компилировать файлы .m/.mm/.c/.cpp
Примечание: подпапки в настоящее время не поддерживаются.
Простой пример использования нативного кода плагина можно найти здесь
Этот пример демонстрирует, как может быть вызван код objective-C из приложения Unity iOS. Это приложение реализует очень простой клиент Bonjour. Приложение состоит из проекта Unity IOS (Plugins/Bonjour.cs является C# интерфейсом для нативного кода, в то время как BonjourTest.js - это скрипт JS, который реализует логику приложения) и нативный код (Assets/Code) , который должен быть добавлен к собранному проекту XCode.