Возможен ли собственный API-интерфейс Unity3d через IL2CPP?

Я размышляю над идеей доступа к собственному API-интерфейсу Unity3d и, возможно, создания библиотеки-оболочки для удобства использования человеком. Для этого я сейчас пытаюсь выяснить, что именно происходит, когда проект Unity конвертируется в проект XCode во время сборки с включенным флагом IL2CPP.

Я хотел бы знать, что именно происходит, когда IL2CPP переводит IL в C++, почему в проект все еще включены DLL, и есть ли что-то особенное в окончательном процессе компиляции, например, где происходит волшебство?

Любые идеи и мнения относительно осуществимости описанной цели (Unity3d C++ API) приветствуются.

PS: я понимаю, что такой API был бы по меньшей мере хакерским, и да, я понимаю, что есть и другие технологии, кроме Unity3d, которые позволяют использовать C++ в качестве первоклассного гражданина, а именно Unreal Engine. Этот вопрос носит в первую очередь теоретический характер. Вот и мне тоже нравится с ++:)

1 ответ

Решение

Нет, ничего в скриптовом бэкенде IL2CPP не предоставляет новый нативный API от Unity.

На самом деле здесь не так много магии. Toolchain - это что-то вроде этого.

  1. Используйте компилятор Mono для генерации IL-сборок из кода C# в пользовательском проекте Unity.
  2. Удалите неиспользуемый IL из сборок, чтобы преобразовать в C++ (это поможет нам уменьшить точный код и размер двоичного файла).
  3. Используйте IL2CPP для генерации кода C++ из сборок IL.
  4. Скомпилируйте код C++ с помощью компилятора C++ для собственной платформы (Xcode на iOS, Emscripten для WebGL)

Единственная разница между использованием скриптового бэкенда Mono и скриптового бэкенда IL2CPP для Xcode для iOS заключается в том, какие файлы включены в проект Xcode. Для IL2CPP включены все сгенерированные файлы C++.

Независимо от того, какой серверный сценарий вы используете, API для Unity остается неизменным.

Другие вопросы по тегам