The button control type provides the functionality of a basic button. That is, when clicked/tapped, something happens.

Buttons also come in some special varieties which offer very specific functionality.
The Button control type executes code in response to user input by invoking a method on a MonoBehavior (specified by setting the "Script With Method To Invoke" and "Method To Invoke" properties), and/or by calling a delegate, set by calling the SetInputDelegate() method through script.

When an event matching "When To Invoke" occurs, any registered EZValueChangedDelegate delegate will be called.
Control-specific Properties
Sound On Over - The sound to play when the pointing device passes over the button.

Sound On Click
- The sound to be played when the button is clicked/tapped.

Repeat - When set to true, any associated value change delegate/invoke will be called each frame as long as the button is pressed.

Always Finish Active Transition - When checked, the button will wait for any "Active" state transition (the transition which runs when the control enters its "Active" state) to fully complete before playing any other state transition. This is so that if you fire a transition when the button is clicked (active), then even though the click was immediately released (which would normally immediately transition the button back to an "Over" state), the button's active transition will complete before playing the appropriate "Over" state transition.
This is the state when the button has no pointing device over it and it is not disabled.
This state is entered when a pointing device hovers over the button and is exited when the pointing device leaves the button area (unless it is being held down, in which case, it is exited when the device is both out of the button area and no longer held down). This state is never entered when UIManager.pointerType is set to TOUCHPAD.


Though the "over" state is not used when using the touchpad pointer type, it is used while testing with the mouse pointer type. As a result, even if you do not plan to use the "over" appearance for this reason, it is recommended that you assign a texture to this state (even if it is the same as for "normal") because otherwise, when testing with the mouse, if no appearance is defined for "over", when the button is released, it will continue to appear active while the mouse is still over it.
This state is entered when the button is pressed by a pointing device and is exited when the pointing device is released. "Pressed" refers to when, for example, a mouse button is held down, or a touch occurs on a touchpad. "Released" refers to when, for example, a mouse button is released, or a touch ends on a touchpad.
This state indicates that the button is disabled and will not receive input.

Special Button Types

Below are a few special button types
When clicked, this button will open the scene specified in the Scene field. It will also bring up an optional panel to display a "loading" message.
When clicked, the specified URL will be visited (remember to include "http://" or other appropriate protocol prefix to your URL).
This button is for use when using the RAY pointer type (see UIManager). It is useful for touchpad-based devices when you cannot use a hardware button to set the ray to an active state. An example usage would be for the "use" or "fire" button in an iPhone-based FPS.
This button provides several methods for changing between UIPanels. See Using Panels as well as the UIBtnChangePanel section of the scripting reference for more details.
This control is actually more akin to the UIRadioBtn control as it is mutually exclusive to other UIPanelTab controls with which it shares a parent GameObject. It can be used to show/hide panels as well as, as the name suggests, setup a tabbed interface using panels.

NOTE: UIPanelTab uses the forward direction for both bringing in and dismissing.