Cross Input Support UGUI
🎮 CrossInputSupportUGUI Class
The CrossInputSupportUGUI
class provides keyboard and controller navigation support for Inventool's UI when set up properly with the PlayerInput
, SelectorUGUI
and TargetSelectable
components.
Namespace:
Esper.Inventool.Input
Access:public
Type:class
Inherits:MonoBehaviour
📦 Fields
public
autoHideSelector
bool
If the selector should automatically be hidden after confirming an action.
public
playerMap
string
The player input map name.
public
menuMap
string
The menu input map name.
public
scrollingSensitivity
float
The scrolling sensitivity used when locked on a scroller.
public
onTab
UnityEvent
Callback for when the tab button is pressed.
public
onCancel
UnityEvent
Callback for when the cancel button is pressed.
public
onConfirm
UnityEvent
Callback for when the confirm button is pressed.
public
onMove
UnityEvent
Callback for when a move button is pressed.
public
top
CrossInputSupportedWindowUGUI
The window currently over all others. (Hidden in inspector)
public
selectables
List<TargetSelectable>
A list of selectables of the top window. (Hidden in inspector)
public
selection
TargetSelectable
The currently targeted selectable. (Hidden in inspector)
public
initialSelectable
TargetSelectable
The initial selectable. (Hidden in inspector)
public
windows
List<CrossInputSupportedWindowUGUI>
A list of all registered windows in the scene. (Hidden in inspector)
public
selector
SelectorUGUI
The selector. (Hidden in inspector)
public
input
PlayerInput
The player input component. (Hidden in inspector)
protected
lastSelectables
Dictionary<CrossInputSupportedWindowUGUI, TargetSelectable>
The last selectables of each window.
private
moveHeldCoroutine
Coroutine
A coroutine that handles move button holding.
private
lockedMoveAction
Action
An action to execute when the selector is locked on a selectable.
private
moveDirection
Vector2
The current move direction.
private
isLocked
bool
If the selector is currently locked on the selected selectable.
🔍 Properties
public static
Instance
CrossInputSupportUGUI
The active instance (singleton).
🧰 Methods
public
GetSelectedItemStack(bool includeAny = false)
ItemStack
Gets the selected item stack (if any).
protected virtual
TryReturn()
bool
Reselects the last selectable if possible.
private
SetActionMap()
void
Sets the action map depending on which window is open.
public
Register(CrossInputSupportedWindowUGUI window)
void
Registers an input supported window.
public
Unregister(CrossInputSupportedWindowUGUI window)
void
Unregisters an input supported window.
public
DetermineTop()
void
Determines the top window and repopulates the selectable list.
public
FindSelectables()
List<TargetSelectable>
Finds the visible selectables of the top window.
private
LateFindInitial()
IEnumerator
Calls FindInitial
after a delay.
public
FindInitial()
TargetSelectable
Finds the initial selectable of the top window.
public
Select(TargetSelectable selectable)
void
Selects a selectable.
public
SelectInitial()
void
Selects the initial selectable.
public
Deselect()
void
Deselects the selected selectable.
public
AssessSelection()
void
Checks the state of the selected selectable and deselects if necessary.
public
Unlock()
void
Unlocks the selector.
public
Lock()
void
Locks the selector.
public
Move(Vector2 dir)
void
Selects the closest selectable in the given direction.
private
OnMenuMove(InputValue inputValue)
void
Handles directional input for menu navigation.
private
OnTab(InputValue inputValue)
void
Handles tab input.
private
OnCancel(InputValue inputValue)
void
Handles cancel input.
private
OnConfirm(InputValue inputValue)
void
Handles confirm input.
private
OnDeselect()
void
Handles deselection.
private
MoveHeld()
IEnumerator
Handles move button hold.
🧩 Nested Types
public enum InitialSelectablePosition
public enum InitialSelectablePosition
Defines the placement of the initial selectable.
TopLeft
Top‑left corner.
TopRight
Top‑right corner.
BottomLeft
Bottom‑left corner.
BottomRight
Bottom‑right corner.
Active Instance
You can get the active CrossInputSupportUGUI
instance with CrossInputSupportUGUI.Instance
. Ensure there's an instance of it in your scene before using this field.
Registration
The CrossInputSupportUGUI
class only works on registeredCrossInputSupportedWindowUGUI
components. Use the Register
method to register a CrossInputSupportedWindowUGUI
.
CrossInputSupportUGUI.Instance.Register();
Use Unregister
to have the opposite effect.
CrossInputSupportUGUI.Instance.Unregister();
Top Window
The window at the top of every other one will have navigation control. To update the top window, use the DetermineTop
method.
CrossInputSupportUGUI.Instance.DetermineTop();
Selectables
Selectables are UI objects that can be selected by the CrossInputSupportUGUI
component.
Find Selectables
To find all selectables of the top document, use the FindSelectables
method. This will update the selectables
field.
CrossInputSupportUGUI.Instance.FindSelectables();
Find Initial
The initial selectable is the first one selected when navigating as decided by the initialSelectablePosition
field. Use the FindInitial
method to get the initial selectable. this will update the initialSelectable
field.
Selection
A Selectable is hovered when navigating with any move button. The hovered selectable will have the selector targeting it.
Select
To simulate a selection, use the Select
method. If the selector is locked, this method will do nothing.
CrossInputSupportUGUI.Instance.Select(visualElement);
To select the initial selectable, use SelectInitial
.
CrossInputSupportUGUI.Instance.SelectInitial();
Deselect
Use Deselect
to stop hovering and hide the selector graphic.
CrossInputSupportUGUI.Instance.Deselect();
Alternatively, you can use AssessSelection
, which will deselect the current selection if it's not enabled or selectable anymore.
CrossInputSupportUGUI.Instance.AssessSelection();
Locking
To lock on a selectable, when one is hovered, use the Lock
method. When a selectable is locked on, navigation will be prevented.
CrossInputSupportUGUI.Instance.Lock();
Unlocking
The Unlock
method will stop locking on to a selectable.
CrossInputSupportUGUI.Instance.Unlock();
Moving
Use the Move method to move the selector towards a direction.
CrossInputSupportUGUI.Instance.Move(Vector2.down);
Getting the Selected Item Stack
To get the Item Stack that the selector is currently over, use the GetSelectedItemStack
method. This method will return null if there is no selected item stack.
ItemStack itemStack = CrossInputSupportUGUI.Instance.GetSelectedItemStack()
Last updated