Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

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

Плагины для настольных платформ представляют собой библиотеки нативного кода, который можно написать на языке C, C++ и цели C. На этой странице описаны плагины для macOS, Windows, и Linux. Для получения дополнительной информации см. Нативные плагины.

Плагины macOS

Вы можете развернуть плагины macOS в виде пакетов или, если вы используете IL2CPP скриптовый сервер, свободные файлы C++, которые вы можете вызвать с помощью синтаксиса [DllImport("__Internal")]. Дополнительную информацию о свободных плагинах C++ см. в C++ плагины исходного кода для IL2CPP.

Чтобы создать пакетный проект с помощью Xcode:

  1. Откройте Xcode.
  2. Выберите Файл > Новый > Project > macOS > Фреймворк и библиотека > Пакеты.

Дополнительные сведения о работе с Xcode см. в Документация Apple по Xcode.

Потребности в ресурсах

  • Вы можете построить свой плагин в виде универсального бинарного файла, совместимого с 64-битными архитектурами. В качестве альтернативы вы можете предоставить отдельные файлы dylib.
  • Если вы используете C++ (.cpp) или Objective-C (.mm) для реализации плагина, вы должны объявить функции с связью C:
extern "C"
{
  float ExamplePluginFunction ();
}

Плагины Windows

Плагины на Windows представляют собой либо файлы .dll с экспортированными функциями, либо свободные файлы C++, если вы используете IL2CPP.. Вы можете использовать большинство языков и сред разработки, которые могут создавать файлы .dll для создания плагинов. Вы должны объявить любые функции C++ с связью C, чтобы избежать проблем с именами.

Плагины Linux

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

При сборке собственных плагинов для Linux, если созданная библиотека имеет зависимости от другого собственного плагина, вы должны указать rpath для этой библиотеки во время компиляции.

Добавьте флажок линкера -Wl, -rpath=$ORIGIN, чтобы указать путь поиска во время выполнения. Флаг линкера указывает загрузчику искать свои зависимости в текущем каталоге библиотеки помимо поиска в системном пути поиска. Вы можете добавить другие флажки линкера вместе с -Wl, -rpath=$ORIGIN, однако Unity не контролирует их. Например, /usr/bin/g++ -o binary.c.o -Wl,-rpath=$ORIGIN.

В качестве альтернативы, вы можете установить LD_LIBRARY_PATH=dependency path в среде, чтобы дать указание загрузчику искать зависимости по этому пути. Linux автоматически не ищет зависимости в текущем каталоге. Убедитесь, что вы установили правильный путь поиска зависимостей, поскольку неправильный путь вызывает ошибки отсутствия библиотеки в Unity Editor.

Управление плагинами внутри Unity

В Unity плагин Плагин Inspector управляет вашими плагинами. Чтобы получить доступ к Плагин Inspector, выберите файл плагина в окне Project. Для автономных платформ вы можете выбрать архитектуру CPU, с которой совместима библиотека. Для кросс-платформенных плагинов вы должны включить файл .bundle (для macOS), .dll file (для Windows) и файл .so (для Linux). Unity автоматически выбирает правильный плагин для целевой платформы и включает его в проигрыватель. Дополнительную информацию см. в Импорт и настройка плагинов.

Плагин Inspector
Плагин Inspector

Вызов плагина из скрипта C#

Поместите свой встроенный плагин в папку Ассеты или соответствующий подкаталог архитектуры в вашем Unity Project. Unity затем найдет его по имени, когда вы вызовете его из скрипта C#. Например: [DllImport ("PluginName")] private static extern float ExamplePluginFunction ();

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

Разгрузка плагина

После загрузки в сеанс Редактора, собственные плагины не могут быть разгружены. Чтобы изменить плагин, который вы уже загрузили, вы должны перезапустить Unity Editor.

Редактор загружает нативный плагин, если вы вызываете одну из функций плагина из скрипта редактора или когда вы вступаете в режим воспроизведения с плагином Загрузить при запуске опция включена. Плагин также загружается в сессию Редактора, когда вы загружаете его вручную с помощью скрипта.

Примеры плагинов

Вы можете скачать и использовать эти проекты, чтобы узнать, как реализовать плагины в Unity.

  • Самый простой пример плагина: Этот проект реализует базовые операции (например, печать числа, печать строки, добавление двух плавающих чисел и добавление двух целых чисел). Этот проект включает файлы проектов Windows, macOS и Linux.
  • Native Renderer Plugin: Это низкоуровневый плагин рендеринга, который рендеринг вращающийся треугольник из C++ кода после того, как все обычные рендеринга сделано и заполняет процедурную текстуру из C++ кода, используя Texture.GetNativeTexturePtr для доступа к нему. Этот проект включает в себя Windows, UWP, macOS, Web и Android файлы.

Дополнительные ресурсы