A USceneComponent is the base class for any component in Unreal Engine that has a transform — a position, rotation, and scale in the world. It can be attached to other components, forming a hierarchy.

Component Hierarchy

Unreal’s component system has three main layers:

  • UActorComponent — the base. Has no transform, no position in the world. Used for pure logic (e.g., a health component that just stores a number).
  • USceneComponent — adds a transform. Can be attached to other scene components. Doesn’t render anything by itself.
  • UPrimitiveComponent — adds rendering and collision. This is what UStaticMeshComponent, UBoxComponent, and UCameraComponent derive from.

Why It Matters

When you see a system built as a scene component — like the UNGCharacterInteractComponent in the NGInteractionSystem — it means the component has a position in the world and can have child components attached to it. The interaction component uses this to attach a UBoxComponent trigger as a child, so the trigger volume moves with the character.

Attaching Components

// In constructor
InteractionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("InteractionBox"));
InteractionBox->SetupAttachment(this);

SetupAttachment creates a parent-child relationship. When the parent moves, the child moves with it. This is how the entire component tree of an actor stays together.