Skip to content

awesomedotnetcore/UnrealDotNet

 
 

Repository files navigation

UnrealDotNet

UnrealDotNet - это плагин для Unreal Engine 4 позволяющий исполнять код на языке С#.

Помимо вызова статических методов из с++/Вlueprint, плагин позволяет взаимодействовать с объектами движка и наследоваться от таких классов как AActor, ACharacter, USceneComponent и т.д. Поддерживается переопределение виртуальных методов и работа с событиями, такими как OnComponentEndOverlap. Плагин позволяет перезагружать сборки c# без перезапуска движка.

Демонстрация работы (видео довольно старое):

Как это запустить?

  1. Скачиваем этот проект
  2. Скачиваем и устанавливаем net core runtime
  3. Копируем папку с coreclr.dll (примерно в C:\Program Files\dotnet\shared\Microsoft.NETCore.App\..\ в Plugins\UnrealDotNet\Binaries\Win64\dotenet_clr
  4. Каким либо образом находим Newtonsoft.Json.dll и кидаем в Plugins\UnrealDotNet\Binaries\Win64\dotenet_libs
  5. Открываем проект Source\GameLogic\GameLogic.sln и компилируем
  6. Запускаем DotUnrealExample.uproject (первый запуск будет долгим из-за компиляции)

!!! На данный момент компиляция проекта вне редактора сломана, и придётся в ручную копировать папки и использовать бубен.

Поддерживается версия движка 4.20. Однако плагин легко переносится на другие версии движка. Для перехода на другую версию необходимо заново сгенерировать обертки при помощи CodeGeneretor. После этого возможно придётся отредактировать CodeGenerator.json и HeaderScanList.txt для отключения компонентов вызывающих проблемы.

Roadmap

Реализовано:

  • Создание C# классов, наследованных от AActor
  • Горячая перезагрузка C# кода
  • Отладка C# кода
  • Вызов статичных методов из C++ и Blueprint
  • Вызов простых методов C++ и Blueprint из C#
  • Компиляция для Win64

Частично реализовано:

  • Переопределение виртуальных методов
  • Взаимодействие с классами UE4
  • Взаимодействие со структурами UE4
  • Взаимодействие с перечислениями UE4
  • Взаимодействие со свойствами объектов UE4
  • Редактирование публичных свойств из редактора UE4

Releases

No releases published

Packages

No packages published

Languages

  • C# 71.1%
  • C++ 27.7%
  • Other 1.2%