Version: 5.3 (switch to 5.4b)
Native Plugins
Нативный низкоуровневый интерфейс плагина

Сборка плагинов для настольных платформ

На этой странице описан нативный код плагинов для настольных платформ (Windows/Mac OS X/Linux). Обратите внимание, что плагины намеренно отключены в web-плеере по соображениям безопасности.

Сборка плагина для Mac OS X

На Mac OSX плагины будут развернуты в виде бандлов. Вы можете создать проект бандла в XCode, выбрав File->NewProject…, а затем выбрав Bundle -> Carbon/Cocoa Loadable Bundle (в XCode 3) или OS X -> Framework & Library -> Bundle (в XCode 4)

Если вы используете плагин, реализованный на C++ (.cpp) или Objective-C (.mm), то вы должны убедиться, что функции объявлены с C-связями, чтобы избежать проблем с коверканьем имён.

extern "C" {
  float FooPluginFunction ();
}

Сборка плагина для Windows

Плагины на Windows - это DLL-файлы с экспортированными функциями. Практически любой язык или среда разработки, которая может создавать DLL-файлы, могут быть использованы для создания плагина. Как и на Mac OSX, вы должны убедиться, что все функции на C++ объявлены с C-связями, чтобы избежать проблем с коверканьем имен.

Сборка плагина для Linux

Плагины на Linux - это фалы .so с экспортированными функциями. Эти библиотеки обычно пишутся на C или C++, но может быть использован любой другой язык. Как в случае с другими платформами, вы должны убедиться, что все функции на С++ объявлены с С-связями, чтобы избежать проблем с коверканьем имен.

32-битные и 64-битные библиотеки

Вопрос о необходимости 32-битных и/или 64-битных плагинах рассматривается отдельно в зависимости от платформы.

Windows и Linux

В Windows и Linux, плагинами можно управлять вручную (например, прежде чем собрать 64-битную игру, копируйте 64-битную библиотеку в папку Assets/Plugins, а, прежде чем собрать 32-битную игру, копируйте 32-битную библиотеку в папку Assets/Plugins) ИЛИ вы можете разместить 32-битную версию плагина в Assets/Plugins/x86, а 64-битную версию плагина в Assets/Plugins/x86_64. По умолчанию редактор сначала будет искать в подпапках конкретной архитектуры и, если этот каталог не существует, он будет копировать плагины из папки Assets/Plugins.

Обратите внимание, что для сборки Universal Linux, вы обязаны использовать подпапки конкретной архитектур (при сборке Universal Linux, редактор не будет копировать все плагины из папки Assets/Plugins).

Mac OS X

Для Mac OS X, вы должны собрать свой плагин в качестве универсального бинарного файла, который содержит как 32-битную, так и 64-битную архитектуры.

Использование ваших плагинов в C#

После сборки, бандл должен быть помещен в папку Assets->Plugins (или соответствующую конкретной архитектуре подпапку) в проекте Unity. Unity будет искать его по имени, когда вы определяете функцию в скрипте С#:-

[DllImport ("PluginName")]
private static extern float FooPluginFunction ();

Обратите внимание, что PluginName не должно включать в себя префикс библиотеки или расширение файла. Например, фактическое имя файла плагина будет PluginName.dll на Windows, и libPluginName.so на Linux. Знайте, что всякий раз, когда вы изменяете код в плагине, вам нужно будет перекомпилировать скрипты в вашем проекте, иначе плагин не будет иметь последний скомпилированный код.

Развертывание

Для кросс-платформенного плагина необходимо поместить файлы .bundle (для Mac), .dll (для Windows), и .so (для Linux) в папку с плагинами. С вашей стороны больше ничего не требуется - Unity автоматически выбирает правильный плагин для целевой платформы и включает его в игру.

Примеры

Простейший плагин

Этот проект плагина реализует лишь некоторые очень простые операции (печать числа, печать строки, сложить два float, сложить два целых числа). Этот пример может быть полезным, если это ваш первый плагин Unity. Проект можно найти здесь, он включает в себя файлы проекта для Windows, Mac, и Linux.

Рендеринг из кода C++

Пример мультиплатформенного плагина, который работает с многопоточным рендерингом в Unity можно найти на странице Native Plugin Interface.

Native Plugins
Нативный низкоуровневый интерфейс плагина