На этой странице описан нативный код плагинов для настольных платформ (Windows/Mac OS X/Linux). Обратите внимание, что плагины намеренно отключены в web-плеере по соображениям безопасности.
На Mac OSX плагины будут развернуты в виде бандлов. Вы можете создать проект бандла в XCode, выбрав , а затем выбрав -> (в XCode 3) или -> -> (в XCode 4)
Если вы используете плагин, реализованный на C++ (.cpp) или Objective-C (.mm), то вы должны убедиться, что функции объявлены с C-связями, чтобы избежать проблем с коверканьем имён.
extern "C" {
float FooPluginFunction ();
}
Плагины на Windows - это DLL-файлы с экспортированными функциями. Практически любой язык или среда разработки, которая может создавать DLL-файлы, могут быть использованы для создания плагина. Как и на Mac OSX, вы должны убедиться, что все функции на C++ объявлены с C-связями, чтобы избежать проблем с коверканьем имен.
Плагины на Linux - это фалы .so
с экспортированными функциями. Эти библиотеки обычно пишутся на C или C++, но может быть использован любой другой язык.
Как в случае с другими платформами, вы должны убедиться, что все функции на С++ объявлены с С-связями, чтобы избежать проблем с коверканьем имен.
Вопрос о необходимости 32-битных и/или 64-битных плагинах рассматривается отдельно в зависимости от платформы.
В 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, вы должны собрать свой плагин в качестве универсального бинарного файла, который содержит как 32-битную, так и 64-битную архитектуры.
После сборки, бандл должен быть помещен в папку
(или соответствующую конкретной архитектуре подпапку) в проекте 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.
Пример мультиплатформенного плагина, который работает с многопоточным рендерингом в Unity можно найти на странице Native Plugin Interface.