Documentation
Integration

NGUI

Getting InControl to work with NGUI is possible. I don’t have any NGUI experience myself, but several users have reported success with it. The following script (attached to UICamera in the NGUI hierarchy) should get you started:

public class CustomInputCamera : MonoBehaviour
{
	void Start()
	{
		SetCustomInput();
	}


	public static void SetCustomInput()
	{
		UICamera.onCustomInput = CustomInput;
	}


	public static void CustomInput()
	{
		if (UICamera.selectedObject == null)
		{
			return;
		}

		//The default NGUI cancel key is KeyCode.JoystickButton1 and will cause
		//NGUI to intercept this and set the selected object to null
		//before we get a chance to interpret the input. Setting it to
		//KeyCode.None will cause it to ignore that test.
		UICamera.current.cancelKey1 = KeyCode.None;

		InputDevice device = InputManager.ActiveDevice;

		if (device.Action1.WasPressed)
		{
			UICamera.selectedObject.SendMessage( "OnClick" );
		}

		if (device.Direction.Up.WasPressed)
		{
			UICamera.currentScheme = UICamera.ControlScheme.Controller;
			UICamera.selectedObject.SendMessage( "OnKey", KeyCode.UpArrow );
		}

		if (device.Direction.Down.WasPressed)
		{
			UICamera.currentScheme = UICamera.ControlScheme.Controller;
			UICamera.selectedObject.SendMessage( "OnKey", KeyCode.DownArrow );
		}

		if (device.Direction.Right.WasPressed)
		{
			UICamera.currentScheme = UICamera.ControlScheme.Controller;
			UICamera.selectedObject.SendMessage( "OnKey", KeyCode.RightArrow );
		}

		if (device.Direction.Left.WasPressed)
		{
			UICamera.currentScheme = UICamera.ControlScheme.Controller;
			UICamera.selectedObject.SendMessage( "OnKey", KeyCode.LeftArrow );
		}
	}
}

You may also need to comment out the following code in UICamera:

// Update the keyboard and joystick events
// if (mCurrentSelection != null) ProcessOthers();