Skip to content

Troubleshooting

No focus when Play Mode starts

Symptom: No control is selected after entering Play Mode.

Likely cause: Initial Scope is unassigned or inactive, its targets are invalid, or the manager cannot resolve an EventSystem.

Fix/check: Assign an active scope and valid default child. Assign the EventSystem explicitly and confirm the EventSystem GameObject is active.

EventSystem missing

Symptom: The Console reports SmartFocusManager requires an active EventSystem.

Likely cause: The manager's Event System field is empty and EventSystem.current is unavailable.

Fix/check: Add one active EventSystem to the scene and assign it to the manager.

Input System actions not enabled

Symptom: CurrentMode never changes from its initial value.

Likely cause: The detector observes disabled actions, Auto cannot resolve the intended EventSystem or UI module, or Manual is observing different actions than expected.

Fix/check: Confirm the EventSystem uses InputSystemUIInputModule and its relevant UI actions are assigned and enabled. In Auto, inspect the detector's read-only resolved actions and the Focus Manager's Event System assignment. In Manual, check the selected asset, map, actions, and whether those actions are enabled. The detector observes actions but does not enable them.

Gamepad does not navigate

Symptom: Gamepad activity may be detected, but Unity UI selection does not move.

Likely cause: The InputSystemUIInputModule Navigate action lacks the needed bindings, or no valid selection exists.

Fix/check: Verify the module's Navigate action contains D-pad or stick bindings, the action is enabled, and the active scope has a valid focus target.

Selection disappears after panel changes

Symptom: Closing or deactivating a panel leaves no usable selection.

Likely cause: The application deactivated the selected panel without activating and setting the next focus scope.

Fix/check: Activate the destination panel, then call SetScope(destinationScope). Use modal APIs instead for popups that should restore an opener.

Remembered selection is not restored

Symptom: Returning to a scope selects its default instead of the prior control.

Likely cause: Remember Last Selection is disabled, memory was cleared, or the remembered control is no longer valid.

Fix/check: Enable scope memory and confirm the control remains a descendant, active, enabled, and interactable. Invalid memory intentionally falls through to the default.

Symptom: Closing a popup does not restore the base menu selection.

Likely cause: The popup was entered with SetScope, SetScope was called while it was open, or PopModal was not called.

Fix/check: Open with PushModal and close with PopModal. Avoid SetScope during that modal stack because it clears restoration history.

Symptom: Links still follow old positions or old content.

Likely cause: The rebuild ran before layout settled, or automatic rebuilding is disabled.

Fix/check: Mark the layout and group dirty for a deferred rebuild. For an immediate result, call LayoutRebuilder.ForceRebuildLayoutImmediate before RebuildNavigation().

Explicit override produces no target

Symptom: A direction configured as Explicit does nothing.

Likely cause: Its target is missing, inactive, disabled, or non-interactable.

Fix/check: Assign a valid Selectable and rebuild. Invalid Explicit targets resolve to no target and do not fall back to Auto.

Mouse and gamepad behavior differs from expectation

Symptom: Focus is not recovered during mouse use, or selection recovers more aggressively without a detector.

Likely cause: This is the manager's current input-mode policy.

Fix/check: Assign an active Input Mode Detector (SmartInputModeDetector) component when Mouse mode should pause recovery. In Auto, verify its resolved actions come from the intended EventSystem's UI module. In Manual, verify the selected actions are enabled. Manual observation does not change the EventSystem's controls.