Locking the Cursor Disables Button & Mouse Events
Unity GUI buttons and mouse events such as OnMouseOver or OnPointerDown have their events disabled when the cursor is set to a locked state.
The cursor is locked by setting
Cursor.lockState = true; which locks the mouse cursor to the center of the screen.
Even on android or iOS mobile devices where a mouse cursor isn’t used and a touchscreen is instead GUI.Buttons will not be clickable and mouse events will not be called.
NGUI Hide Mouse Cursor Preventing Unity Button & Mouse Events
Be aware that if you’re using NGUI (Next-Gen UI by Tasharen Entertainment) the ‘hide mouse cursor’ option also locks the cursor.
This means that Unity GUI and built in mouse events won’t be called, however NGUI’s own events won’t have any issues with it. Just note that trying to use GUI.Button alongside with NGUI for debug buttons for example will not work unless you unlock the cursor lockState first.
Affected Unity Versions & Confirmed to be Intentional
This functionality was introduced in early versions of Unity 5.4 and was confirmed by the Lead Unity UI Developer over on the Unity forums as being an intentional change by design.
Prior to the change events would still be called when able to interact with the buttons in ways other than the mouse, such as the touchscreen of an android or iOS mobile device.