Возможен ли собственный 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 - это что-то вроде этого.
- Используйте компилятор Mono для генерации IL-сборок из кода C# в пользовательском проекте Unity.
- Удалите неиспользуемый IL из сборок, чтобы преобразовать в C++ (это поможет нам уменьшить точный код и размер двоичного файла).
- Используйте IL2CPP для генерации кода C++ из сборок IL.
- Скомпилируйте код C++ с помощью компилятора C++ для собственной платформы (Xcode на iOS, Emscripten для WebGL)
Единственная разница между использованием скриптового бэкенда Mono и скриптового бэкенда IL2CPP для Xcode для iOS заключается в том, какие файлы включены в проект Xcode. Для IL2CPP включены все сгенерированные файлы C++.
Независимо от того, какой серверный сценарий вы используете, API для Unity остается неизменным.