InControl: 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();