As far as I know, surprisingly NGUI doesn't support both mouse AND controller input simultaneously. I feel like this would be a common enough feature for anyone making a PC game that simply checking the Mouse, Keyboard and Controller bools in the UICamera under Event Sources would work, but I've found that it's possible to lose focus. This causes keyboard & controller inputs to no longer work until the mouse is used to update the selectedObject again.
As you've eluded to, I ended up using a custom UICamera.onHover, but I also had to add a hacky check to UICamera.selectedObject which doesn't allow selecting something without a UIKeyNavigation component. (as time goes on and I understand NGUI more, this may change)
To my surprise this seems to be working (I'm using buttons, checkboxes & sliders). For example, when I mouse over a ui button, it becomes selected and the previous ui button becomes deselected. When I mouse OUT of a ui button, it will REMAIN selected until I mouse over another button (or use the keyboard/controller to navigate).
If there is a better way, I'm all ears! Running Windows Unity 4.3 & NGUI 3.8.
EDIT: Damn, after reading the NGUI 3.9 updates, it seems like this issue was solved! At least worth trying anyway. =)
3.9.0
- NEW: Completely redesigned how controller-based input was handled. It's now much more robust and handless seamless transitions from one method of input to another.
- NEW: Added UICamera.controllerNavigationObject that explicitly tracks controller-based selection.
- NEW: NGUI now automatically finds and focuses on an appropriate UIKeyNavigation object if none has focus while receiving controller-based input.