Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

macOS Player: плагины исходного кода C++ для IL2CPP

Вы можете добавлять файлы кода C++ (.cpp) непосредственно в проект Unity при использовании класса IL2CPPРазработанный Unity сервер сценариев, который можно использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Подробнее
См. в Словарь
серверная часть сценариевСреда, обеспечивающая работу сценариев в Unity. Unity поддерживает три различных бэкэнда для сценариев в зависимости от целевой платформы: Mono, .NET и IL2CPP. Однако универсальная платформа Windows поддерживает только два: .NET и IL2CPP. Подробнее
См. в Словарь
. Эти файлы C++ будут действовать как плагины в InspectorA Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта. , что позволяет просматривать и редактировать значения. Подробнее
См. в Словарь
. Если вы настроите файлы C++ для совместимости с macOS Player, Unity скомпилирует их вместе с кодом C++, созданным из управляемых сборок. Выберите соответствующий параметр Mac OS в разделе Настройки платформы окна Инспектора:

Настройки импортера плагинов для файлов C++
Настройки импортера плагинов для файлов C++

Поскольку функции связаны друг с другом сгенерированным кодом C++, нет отдельной DLL для _P/Invoke. В связи с этим вы можете использовать ключевое слово “__Internal” вместо имени DLL, что возлагает на компоновщика C++ ответственность за разрешение функций, а не загрузку их во время выполнения. , как показано в следующем примере:

[DllImport("__Internal")] private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWSTR)]string str);

Вы можете определить функцию такого типа в NativeFunctions.cpp следующим образом:

extern "C" __declspec(dllexport) int __stdcall CountLettersInString(wchar_t* str) { int length = 0; while (*str++ != nullptr) length++; return length; }

Поскольку компоновщик разрешает вызов функции, любая ошибка, допущенная в объявлении функции на управляемой стороне (т. е. код C#, который выполняется в управляемой среде выполнения), приводит к ошибке компоновщика, а не к ошибке времени выполнения. Это также означает, что во время выполнения не требуется динамической загрузки, а функция вызывается непосредственно из C#. Это значительно снижает нагрузку на производительность вызова P/Invoke.

См. также

Plugin Inspector

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3