Class Selectable
Inherited Members
Namespace: UnityEngine.UI
Syntax
[AddComponentMenu("UI/Selectable", 35)]
[ExecuteAlways]
[SelectionBase]
[DisallowMultipleComponent]
public class Selectable : UIBehaviour, IMoveHandler, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler, ISelectHandler, IDeselectHandler, IEventSystemHandler
Constructors
Selectable()
Declaration
protected Selectable()
Fields
m_CurrentIndex
Declaration
protected int m_CurrentIndex
Field Value
| Type | Description |
|---|---|
| Int32 |
s_SelectableCount
Declaration
protected static int s_SelectableCount
Field Value
| Type | Description |
|---|---|
| Int32 |
s_Selectables
Declaration
protected static Selectable[] s_Selectables
Field Value
| Type | Description |
|---|---|
| Selectable[] |
Properties
allSelectableCount
How many selectable elements are currently active.
Declaration
public static int allSelectableCount { get; }
Property Value
| Type | Description |
|---|---|
| Int32 |
allSelectables
A List instance of the allSelectablesArray to maintain API compatibility.
Declaration
[Obsolete("Replaced with allSelectablesArray to have better performance when disabling a element", false)]
public static List<Selectable> allSelectables { get; }
Property Value
| Type | Description |
|---|---|
| List<Selectable> |
allSelectablesArray
Copy of the array of all the selectable objects currently active in the scene.
Declaration
public static Selectable[] allSelectablesArray { get; }
Property Value
| Type | Description |
|---|---|
| Selectable[] |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class Example : MonoBehaviour
{
//Displays the names of all selectable elements in the scene
public void GetNames()
{
foreach (Selectable selectableUI in Selectable.allSelectablesArray)
{
Debug.Log(selectableUI.name);
}
}
}
animationTriggers
The AnimationTriggers for this selectable object.
Declaration
public AnimationTriggers animationTriggers { get; set; }
Property Value
| Type | Description |
|---|---|
| AnimationTriggers |
Remarks
Modifications will not be visible if transition is not Animation.
colors
The ColorBlock for this selectable object.
Declaration
public ColorBlock colors { get; set; }
Property Value
| Type | Description |
|---|---|
| ColorBlock |
Remarks
Modifications will not be visible if transition is not ColorTint.
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
public Button button;
void Start()
{
//Resets the colors in the buttons transitions.
button.colors = ColorBlock.defaultColorBlock;
}
}
currentSelectionState
Declaration
protected Selectable.SelectionState currentSelectionState { get; }
Property Value
| Type | Description |
|---|---|
| Selectable.SelectionState |
image
Convenience function that converts the referenced Graphic to a Image, if possible.
Declaration
public Image image { get; set; }
Property Value
| Type | Description |
|---|---|
| Image |
interactable
Is this object interactable.
Declaration
public bool interactable { get; set; }
Property Value
| Type | Description |
|---|---|
| Boolean |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class Example : MonoBehaviour
{
public Button startButton;
public bool playersReady;
void Update()
{
// checks if the players are ready and if the start button is useable
if (playersReady == true && startButton.interactable == false)
{
//allows the start button to be used
startButton.interactable = true;
}
}
}
navigation
The Navigation setting for this selectable object.
Declaration
public Navigation navigation { get; set; }
Property Value
| Type | Description |
|---|---|
| Navigation |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
public Button button;
void Start()
{
//Set the navigation to the default value. ("Automatic" is the default value).
button.navigation = Navigation.defaultNavigation;
}
}
spriteState
The SpriteState for this selectable object.
Declaration
public SpriteState spriteState { get; set; }
Property Value
| Type | Description |
|---|---|
| SpriteState |
Remarks
Modifications will not be visible if transition is not SpriteSwap.
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
//Creates an instance of a sprite state (This includes the highlighted, pressed and disabled sprite.
public SpriteState sprState = new SpriteState();
public Button btnMain;
void Start()
{
//Assigns the new sprite states to the button.
btnMain.spriteState = sprState;
}
}
targetGraphic
Graphic that will be transitioned upon.
Declaration
public Graphic targetGraphic { get; set; }
Property Value
| Type | Description |
|---|---|
| Graphic |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
public Image newImage;
public Button btnMain;
void SomeFunction()
{
//Displays the sprite transitions on the image when the transition to Highlighted,pressed or disabled is made.
btnMain.targetGraphic = newImage;
}
}
transition
The type of transition that will be applied to the targetGraphic when the state changes.
Declaration
public Selectable.Transition transition { get; set; }
Property Value
| Type | Description |
|---|---|
| Selectable.Transition |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
public Button btnMain;
void SomeFunction()
{
//Sets the main button's transition setting to "Color Tint".
btnMain.transition = Selectable.Transition.ColorTint;
}
}
Methods
AllSelectablesNoAlloc(Selectable[])
Non allocating version for getting the all selectables. If selectables.Length is less then s_SelectableCount only selectables.Length elments will be copied which could result in a incomplete list of elements.
Declaration
public static int AllSelectablesNoAlloc(Selectable[] selectables)
Parameters
| Type | Name | Description |
|---|---|---|
| Selectable[] | selectables | The array to be filled with current selectable objects |
Returns
| Type | Description |
|---|---|
| Int32 | The number of element copied. |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class Example : MonoBehaviour
{
Selectable[] m_Selectables = new Selectable[10];
//Displays the names of all selectable elements in the scene
public void GetNames()
{
if (m_Selectables.Length < Selectable.allSelectableCount)
m_Selectables = new Selectable[Selectable.allSelectableCount];
int count = Selectable.AllSelectablesNoAlloc(ref m_Selectables);
for (int i = 0; i < count; ++i)
{
Debug.Log(m_Selectables[i].name);
}
}
}
Awake()
Convenience function to get the Animator component on the GameObject.
Declaration
protected override void Awake()
Overrides
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class ExampleClass : MonoBehaviour
{
private Animator buttonAnimator;
public Button button;
void Start()
{
//Assigns the "buttonAnimator" with the button's animator.
buttonAnimator = button.animator;
}
}
DoStateTransition(Selectable.SelectionState, Boolean)
Transition the Selectable to the entered state.
Declaration
protected virtual void DoStateTransition(Selectable.SelectionState state, bool instant)
Parameters
| Type | Name | Description |
|---|---|---|
| Selectable.SelectionState | state | State to transition to |
| Boolean | instant | Should the transition occur instantly. |
FindSelectable(Vector3)
Finds the selectable object next to this one.
Declaration
public Selectable FindSelectable(Vector3 dir)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | dir | The direction in which to search for a neighbouring Selectable object. |
Returns
| Type | Description |
|---|---|
| Selectable | The neighbouring Selectable object. Null if none found. |
Remarks
The direction is determined by a Vector3 variable.
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class ExampleClass : MonoBehaviour
{
//Sets the direction as "Up" (Y is in positive).
public Vector3 direction = new Vector3(0, 1, 0);
public Button btnMain;
public void Start()
{
//Finds and assigns the selectable above the main button
Selectable newSelectable = btnMain.FindSelectable(direction);
Debug.Log(newSelectable.name);
}
}
FindSelectableOnDown()
Find the selectable object below this one.
Declaration
public virtual Selectable FindSelectableOnDown()
Returns
| Type | Description |
|---|---|
| Selectable |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class Example : MonoBehaviour
{
public Button startButton;
// Disables the selectable UI element directly below the Start Button
public void IgnoreSelectables()
{
//Finds the selectable UI element below the start button and assigns it to a variable of type "Selectable"
Selectable secondButton = startButton.FindSelectableOnDown();
//Disables interaction with the selectable UI element
secondButton.interactable = false;
}
}
FindSelectableOnLeft()
Find the selectable object to the left of this one.
Declaration
public virtual Selectable FindSelectableOnLeft()
Returns
| Type | Description |
|---|---|
| Selectable |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class ExampleClass : MonoBehaviour
{
public Button btnMain;
// Disables the selectable UI element directly to the left of the Start Button
public void IgnoreSelectables()
{
//Finds the selectable UI element to the left the start button and assigns it to a variable of type "Selectable"
Selectable secondButton = startButton.FindSelectableOnLeft();
//Disables interaction with the selectable UI element
secondButton.interactable = false;
}
}
FindSelectableOnRight()
Find the selectable object to the right of this one.
Declaration
public virtual Selectable FindSelectableOnRight()
Returns
| Type | Description |
|---|---|
| Selectable |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class ExampleClass : MonoBehaviour
{
public Button btnMain;
// Disables the selectable UI element directly to the right the Start Button
public void IgnoreSelectables()
{
//Finds the selectable UI element to the right the start button and assigns it to a variable of type "Selectable"
Selectable secondButton = startButton.FindSelectableOnRight();
//Disables interaction with the selectable UI element
secondButton.interactable = false;
}
}
FindSelectableOnUp()
The Selectable object above current
Declaration
public virtual Selectable FindSelectableOnUp()
Returns
| Type | Description |
|---|---|
| Selectable |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class ExampleClass : MonoBehaviour
{
public Button btnMain;
// Disables the selectable UI element directly above the Start Button
public void IgnoreSelectables()
{
//Finds the selectable UI element above the start button and assigns it to a variable of type "Selectable"
Selectable secondButton = startButton.FindSelectableOnUp();
//Disables interaction with the selectable UI element
secondButton.interactable = false;
}
}
InstantClearState()
Clear any internal state from the Selectable (used when disabling).
Declaration
protected virtual void InstantClearState()
IsHighlighted()
Returns whether the selectable is currently 'highlighted' or not.
Declaration
protected bool IsHighlighted()
Returns
| Type | Description |
|---|---|
| Boolean |
Remarks
Use this to check if the selectable UI element is currently highlighted.
Examples
//Create a UI element. To do this go to Create>UI and select from the list. Attach this script to the UI GameObject to see this script working. The script also works with non-UI elements, but highlighting works better with UI.
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
//Use the Selectable class as a base class to access the IsHighlighted method
public class Example : Selectable
{
//Use this to check what Events are happening
BaseEventData m_BaseEvent;
void Update()
{
//Check if the GameObject is being highlighted
if (IsHighlighted())
{
//Output that the GameObject was highlighted, or do something else
Debug.Log("Selectable is Highlighted");
}
}
}
IsInteractable()
Is the object interactable.
Declaration
public virtual bool IsInteractable()
Returns
| Type | Description |
|---|---|
| Boolean |
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
public class Example : MonoBehaviour
{
public Button startButton;
void Update()
{
if (!startButton.IsInteractable())
{
Debug.Log("Start Button has been Disabled");
}
}
}
IsPressed()
Whether the current selectable is being pressed.
Declaration
protected bool IsPressed()
Returns
| Type | Description |
|---|---|
| Boolean |
OnCanvasGroupChanged()
Declaration
protected override void OnCanvasGroupChanged()
Overrides
OnDeselect(BaseEventData)
Unset selection and transition to appropriate state.
Declaration
public virtual void OnDeselect(BaseEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| BaseEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IDeselectHandler //This Interface is required to receive OnDeselect callbacks.
{
public void OnDeselect(BaseEventData data)
{
Debug.Log("Deselected");
}
}
OnDidApplyAnimationProperties()
Declaration
protected override void OnDidApplyAnimationProperties()
Overrides
OnDisable()
Declaration
protected override void OnDisable()
Overrides
OnEnable()
Declaration
protected override void OnEnable()
Overrides
OnMove(AxisEventData)
Determine in which of the 4 move directions the next selectable object should be found.
Declaration
public virtual void OnMove(AxisEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| AxisEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IMoveHandler
{
//When the focus moves to another selectable object, Invoke this Method.
public void OnMove(AxisEventData eventData)
{
//Assigns the move direction and the raw input vector representing the direction from the event data.
MoveDirection moveDir = eventData.moveDir;
Vector2 moveVector = eventData.moveVector;
//Displays the information in the console
Debug.Log(moveDir + ", " + moveVector);
}
}
OnPointerDown(PointerEventData)
Evaluate current state and transition to pressed state.
Declaration
public virtual void OnPointerDown(PointerEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| PointerEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IPointerDownHandler// required interface when using the OnPointerDown method.
{
//Do this when the mouse is clicked over the selectable object this script is attached to.
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log(this.gameObject.name + " Was Clicked.");
}
}
OnPointerEnter(PointerEventData)
Evaluate current state and transition to appropriate state. New state could be pressed or hover depending on pressed state.
Declaration
public virtual void OnPointerEnter(PointerEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| PointerEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IPointerEnterHandler// required interface when using the OnPointerEnter method.
{
//Do this when the cursor enters the rect area of this selectable UI object.
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("The cursor entered the selectable UI element.");
}
}
OnPointerExit(PointerEventData)
Evaluate current state and transition to normal state.
Declaration
public virtual void OnPointerExit(PointerEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| PointerEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IPointerExitHandler// required interface when using the OnPointerExit method.
{
//Do this when the cursor exits the rect area of this selectable UI object.
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("The cursor exited the selectable UI element.");
}
}
OnPointerUp(PointerEventData)
Evaluate eventData and transition to appropriate state.
Declaration
public virtual void OnPointerUp(PointerEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| PointerEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, IPointerUpHandler, IPointerDownHandler// These are the interfaces the OnPointerUp method requires.
{
//OnPointerDown is also required to receive OnPointerUp callbacks
public void OnPointerDown(PointerEventData eventData)
{
}
//Do this when the mouse click on this selectable UI object is released.
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("The mouse click was released");
}
}
OnSelect(BaseEventData)
Set selection and transition to appropriate state.
Declaration
public virtual void OnSelect(BaseEventData eventData)
Parameters
| Type | Name | Description |
|---|---|---|
| BaseEventData | eventData |
Implements
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour, ISelectHandler// required interface when using the OnSelect method.
{
//Do this when the selectable UI object is selected.
public void OnSelect(BaseEventData eventData)
{
Debug.Log(this.gameObject.name + " was selected");
}
}
OnTransformParentChanged()
Declaration
protected override void OnTransformParentChanged()
Overrides
Select()
Selects this Selectable.
Declaration
public virtual void Select()
Examples
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // required when using UI elements in scripts
using UnityEngine.EventSystems;// Required when using Event data.
public class ExampleClass : MonoBehaviour// required interface when using the OnSelect method.
{
public InputField myInputField;
//Do this OnClick.
public void SaveGame()
{
//Makes the Input Field the selected UI Element.
myInputField.Select();
}
}