Unity поддерживает собственные плагиныНабор кода, созданный вне Unity, который создает функциональность в Unity. В Unity можно использовать два типа подключаемых модулей: управляемые подключаемые модули (управляемые сборки .NET, созданные с помощью таких инструментов, как Visual Studio) и собственные подключаемые модули (библиотеки собственного кода для конкретной платформы). Подробнее
См. в Словарь для Android, написанный на C/C++ и упакованный в общая библиотека (.so) или статическая библиотека (.a). При использовании серверной части сценариев IL2CPP вы можете использовать исходные файлы C/C++ в качестве подключаемых модулей, и Unity компилирует их вместе с файлами, сгенерированными IL2CPP. Сюда входят все исходные файлы C/C++ с расширениями .c, .cc, .cpp и .h.
Совместимость скриптов с серверной частью.
В следующей таблице показано, какие бэкэнды сценариевфреймворк, поддерживающий сценарии в Единстве. Unity поддерживает три различных бэкэнда для сценариев в зависимости от целевой платформы: Mono, .NET и IL2CPP. Однако универсальная платформа Windows поддерживает только два: .NET и IL2CPP. Подробнее
См. в Словарь поддерживают различные типы собственные подключаемые модулисобственная библиотека кода для конкретной платформы, созданная вне Unity для использования в Unity. Позволяет вам получить доступ к таким функциям, как вызовы ОС и сторонние библиотеки кода, которые в противном случае были бы недоступны для Unity. Подробнее
См. в Словарь.
Бэкэнд скриптов | Общая библиотека | Статическая библиотека | Исходные файлы C/C++ |
---|---|---|---|
IL2CPPРазработанный Unity сервер сценариев, который можно использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. More info See in Словарь |
Да | Да | Да |
Mono | Да | Нет | Нет |
Создание и использование собственного подключаемого модуля
Чтобы создать подключаемый модуль C++ для Android, используйте Android NDK и ознакомьтесь с шагами, необходимыми для создания общей библиотеки. То же самое относится и к статическим библиотекам.
Если вы используете C++ для реализации подключаемого модуля, вы должны убедиться, что методы объявлены со связью C, чтобы избежать проблемы с искажением имен. По умолчанию только исходные файлы C с расширением .c в подключаемых модулях имеют связь C (не C++).
extern "C" {
float Foopluginmethod ();
}
После создания библиотеки скопируйте выходные файлы .so в свой проект Unity. В Инспектореокне Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать ценности. Дополнительная информация
Посмотрите в Словарь, отметьте файлы .so как совместимые с Android и установите требуемая архитектура ЦП в раскрывающемся списке:
Для вызова методов собственного подключаемого модуля из скриптов C#фрагмент кода, который позволяет создавать ваши собственные Компоненты, запускайте игровые события, изменяйте свойства Компонентов с течением времени и реагируйте на ввод данных пользователем любым удобным для вас способом. Подробнее
См. в Словарь, используйте следующий код:
[DllImport ("pluginName")]
private static extern float Foopluginmethod();
Обратите внимание, что pluginName не должен включать префикс («lib») или расширение («.so») имени файла. Рекомендуется обернуть все собственные вызовы методов подключаемых модулей дополнительным уровнем кода C#. Этот код проверяет Application.platform и вызывает собственные методы только тогда, когда приложение запущено на реальном устройстве; фиктивные значения возвращаются из кода C# при запуске в редакторе. Используйте определения платформы для управления компиляцией кода, зависящего от платформы.
Когда вы используете исходные файлы C/C++ в качестве подключаемых модулей, вы вызываете их из C# таким же образом, за исключением того, что вы используете __Internal
для имени подключаемого модуля, например :
[DllImport ("__Internal")]
private static extern float Foopluginmethod();
Пример встроенного модуля (C++)
Zip-файл AndroidNativePlugin.unitypackage содержит простой пример подключаемого модуля с собственным кодом, распространяемого в виде пакета Unity.
В примере показано, как вызывать код C++ из приложения Unity. В пакет входит сценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь, в котором отображается сумма двух значений, рассчитанная родным плагином. -в. Для компиляции подключаемого модуля необходимо установить Android NDK.
Чтобы установить образец:
- Загрузите ZIP-файл.
- Извлеките файл AndroidNativePlugin.unitypackage.
- Откройте редактор Unity.
- Создайте новый проект.
- В новом проекте нажмите АктивыЛюбой носитель или данные, которые можно использовать в вашей игре или проекте. Ресурс может быть получен из файла, созданного вне Unity, например, из 3D-модели, аудиофайла или изображения. Вы также можете создавать некоторые типы ресурсов в Unity, например контроллер аниматора, аудиомикшер или текстуру рендеринга. Подробнее
См. в Словарь > Импорт пакета > Специальный пакет. - В диалоговом окне файла Импорт пакета перейдите к папке, в которую вы извлекли файл, и выберите его.
- Обновленные функции в версии 5.5
- В версии 2018.2 добавлена поддержка использования исходных файлов C++ и статических библиотек в качестве подключаемых модулей для Android