UObject
Корень иерархии классов Unreal Engine, пристраивающий к C++ рефлексию, сборку мусора и сериализацию, которых в нём никогда не было.
В C++ нет ни рефлексии, ни сборки мусора, поэтому Unreal строит собственные. Классы помечаются макросами UCLASS, UPROPERTY и UFUNCTION, а Unreal Header Tool читает исходники раньше компилятора и генерирует метаданные. Именно благодаря им свойства видны в редакторе, сохраняются на диск, реплицируются по сети и вызываются из Blueprints.
Сборщик — mark-and-sweep, и он следует только за известными ему указателями. Сырой указатель на UObject без UPROPERTY для него невидим, поэтому объект могут собрать, пока указатель ещё используется, — одна из самых частых причин падений в коде Unreal. Отсюда же наследуется AActor — всё, что можно поставить на уровень.