-
Notifications
You must be signed in to change notification settings - Fork 12
Home
Взаимодействие с с++ происходит при помощи P/Invoke, для этого на основе заголовочных файлов движка генерится куча export методов в с++ и c# библиотека UnrealEngine.dll для вызова этих методов. Для большинства наследников UObject создаются manage классы. Они необходимы для корректного наследования от этих классов в c#. Так же создаются копии перечислений и структур для работы с движком. Кроме того плагин поддерживает работу с событиями. Генерацией этих оберток занимается CodeGeneretor.
Плагин использует среду выполнения net core clr, на данный момент поддерживается только Win64. При запуске движка выполняется загрузка CLR в приложение, далее в него загружаются управляемые сборки.
Для каждого объекта в c# создается обертка, содержащая только адрес реального объекта и его тип. Все обращения к свойствам или методам являются P/Invoke вызовами. При создании экземпляра manage класса происходит создание объекта в ue4 и его обертки в c#.
Вызовы управляемого кода из c++ активно используют рефлексию и скорее всего немного медленные.