Interaction Lifecycle
Updated: Apr 15, 2026
The interaction lifecycle represents the possible statuses of an Interactor or Interactable. There are four possible statuses: Disabled, Normal, Hover, and Select.
In the Unreal implementation, these states are defined as UENUM(BlueprintType) enumerations: EIsdkInteractorState for interactors and EIsdkInteractableState for interactables.
Interactors and Interactables can only move between these states in a linear sequence:
Disabled <-> Normal <-> Hover <-> Select
Transitions are enforced by guards in the SDK. For example, hover() requires the interactor to be in the Normal state, and select() requires it to be in the Hover state. Calling disable() cascades through each intermediate state (Select → Hover → Normal → Disabled).
Interactors (UIsdkInteractorComponent and its subclasses such as UIsdkPokeInteractor and UIsdkRayInteractor) can be in any of the following states:
Disabled: The interactor is in a disabled state where no hovering or selection can occur.
Normal: The default state. The interactor is active but has not detected any candidate interactable.
Hover: The interactor has detected a candidate and can proceed to select (may have an optional interactable).
Select: The interactor is actively selecting (may have an optional interactable).
To observe interaction states at runtime, enable the console variable Meta.InteractionSDK.DebugInteractionVisuals. This draws debug wireframes with the following default colors defined in UIsdkRuntimeSettings: Normal (yellow), Hover (white), Select (cyan), and Disabled (black).
For production use, attach a UIsdkInteractableColorVisual component to provide visual state feedback on interactables.
Interactables (UIsdkInteractableComponent and its subclasses such as UIsdkPokeInteractable and UIsdkRayInteractable) can be in any of the following states:
Disabled: The interactable is in a disabled state where no hovering or selection can occur.
Normal: The default state. The interactable is active but no interactors are hovering over or selecting it.
Hover: The interactable has one or more interactors hovering (and none selecting it).
Select: The interactable has one or more interactors selecting it.
You can subscribe to state changes using the FIsdkInteractorStateChanged and FIsdkInteractableStateChanged delegates. The interactor delegate provides FIsdkInteractorStateChangeArgs, and the interactable delegate provides FIsdkInteractableStateChangeArgs. Both include the previous and new state values.
Now that you know how the interaction lifecycle works in Interaction SDK, continue on to the following guides: