using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Layouts; using UnityEngine.InputSystem.Utilities; #if UNITY_EDITOR using UnityEditor; [InitializeOnLoad] // Automatically register in editor. #endif [DisplayStringFormat("{modifier}+{twoDVector}")] public class AxisWithModifiersComposite : InputBindingComposite { [InputControl(layout = "2DVector")] public int twoDVector; [InputControl(layout = "Button")] public int modifier; public override Vector2 ReadValue(ref InputBindingCompositeContext context) { //Debug.Log("Modifier: " + context.ReadValue(modifier)); //Debug.Log("Vector2: " + context.ReadValue(twoDVector)); Vector2 toReturn = context.ReadValue(modifier) == 0f ? Vector2.zero : context.ReadValue(twoDVector); Debug.Log("Composite raw return: " + toReturn); return toReturn; } static AxisWithModifiersComposite() { InputSystem.RegisterBindingComposite(); } [RuntimeInitializeOnLoadMethod] static void Init() { } // Trigger static constructor. }