Develop

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
Possible states of interactors and interactables
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).
For a detailed walkthrough of what triggers each transition, see the Interaction SDK Architecture Overview.
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.

Learn more

Now that you know how the interaction lifecycle works in Interaction SDK, continue on to the following guides: