docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class DpadControl

    A control made up of four discrete, directional buttons. Forms a vector but can also be addressed as individual buttons.

    Inheritance
    object
    InputControl
    InputControl<Vector2>
    Vector2Control
    DpadControl
    Inherited Members
    Vector2Control.x
    Vector2Control.y
    Vector2Control.EvaluateMagnitude(void*)
    Vector2Control.CalculateOptimizedControlDataType()
    InputControl<Vector2>.valueType
    InputControl<Vector2>.valueSizeInBytes
    InputControl<Vector2>.value
    InputControl<Vector2>.ReadValue()
    InputControl<Vector2>.ReadValueFromPreviousFrame()
    InputControl<Vector2>.ReadDefaultValue()
    InputControl<Vector2>.ReadValueFromState(void*)
    InputControl<Vector2>.ReadValueFromStateWithCaching(void*)
    InputControl<Vector2>.ReadUnprocessedValueFromStateWithCaching(void*)
    InputControl<Vector2>.ReadUnprocessedValue()
    InputControl<Vector2>.ReadValueFromStateAsObject(void*)
    InputControl<Vector2>.ReadValueFromStateIntoBuffer(void*, void*, int)
    InputControl<Vector2>.WriteValueFromBufferIntoState(void*, int, void*)
    InputControl<Vector2>.WriteValueFromObjectIntoState(object, void*)
    InputControl<Vector2>.ReadValueFromBufferAsObject(void*, int)
    InputControl<Vector2>.CompareValue(void*, void*)
    InputControl<Vector2>.ProcessValue(Vector2)
    InputControl<Vector2>.ProcessValue(ref Vector2)
    InputControl.name
    InputControl.displayName
    InputControl.shortDisplayName
    InputControl.path
    InputControl.layout
    InputControl.variants
    InputControl.device
    InputControl.parent
    InputControl.children
    InputControl.usages
    InputControl.aliases
    InputControl.stateBlock
    InputControl.noisy
    InputControl.synthetic
    InputControl.this[string]
    InputControl.magnitude
    InputControl.ToString()
    InputControl.EvaluateMagnitude()
    InputControl.TryGetChildControl(string)
    InputControl.TryGetChildControl<TControl>(string)
    InputControl.GetChildControl(string)
    InputControl.GetChildControl<TControl>(string)
    InputControl.RefreshConfigurationIfNeeded()
    InputControl.RefreshConfiguration()
    InputControl.m_StateBlock
    InputControl.currentStatePtr
    InputControl.previousFrameStatePtr
    InputControl.defaultStatePtr
    InputControl.noiseMaskPtr
    InputControl.stateOffsetRelativeToDeviceRoot
    InputControl.optimizedControlDataType
    InputControl.ApplyParameterChanges()
    Namespace: UnityEngine.InputSystem.Controls
    Assembly: Unity.InputSystem.dll
    Syntax
    public class DpadControl : Vector2Control
    Remarks

    Is stored as four bits by default.

    The vector that is aggregated from the button states is normalized. I.e. even if pressing diagonally, the vector will have a length of 1 (instead of reading something like (1,1) for example).

    Constructors

    DpadControl()

    Declaration
    public DpadControl()

    Properties

    down

    The button representing the vertical downwards state of the D-Pad.

    Declaration
    public ButtonControl down { get; set; }
    Property Value
    Type Description
    ButtonControl

    left

    The button representing the horizontal left state of the D-Pad.

    Declaration
    public ButtonControl left { get; set; }
    Property Value
    Type Description
    ButtonControl

    right

    The button representing the horizontal right state of the D-Pad.

    Declaration
    public ButtonControl right { get; set; }
    Property Value
    Type Description
    ButtonControl

    up

    Declaration
    public ButtonControl up { get; set; }
    Property Value
    Type Description
    ButtonControl

    Methods

    FinishSetup()

    Perform final initialization tasks after the control hierarchy has been put into place.

    Declaration
    protected override void FinishSetup()
    Overrides
    Vector2Control.FinishSetup()
    Remarks

    This method can be overridden to perform control- or device-specific setup work. The most common use case is for looking up child controls and storing them in local getters.

    Examples
      public class MyDevice : InputDevice
                            {
                                public ButtonControl button { get; private set; }
                                public AxisControl axis { get; private set; }
    
                                protected override void OnFinishSetup()
                                {
                                    // Cache controls in getters.
                                    button = GetChildControl("button");
                                    axis = GetChildControl("axis");
                                }
                            }
    

    MakeDpadVector(bool, bool, bool, bool, bool)

    Create a direction vector from the given four button states.

    Declaration
    public static Vector2 MakeDpadVector(bool up, bool down, bool left, bool right, bool normalize = true)
    Parameters
    Type Name Description
    bool up

    Whether button representing the up direction is pressed.

    bool down

    Whether button representing the down direction is pressed.

    bool left

    Whether button representing the left direction is pressed.

    bool right

    Whether button representing the right direction is pressed.

    bool normalize

    Whether to normalize the resulting vector. If this is false, vectors in the diagonal directions will have a magnitude of greater than 1. For example, up-left will be (-1,1).

    Returns
    Type Description
    Vector2

    A 2D direction vector.

    MakeDpadVector(float, float, float, float)

    Create a direction vector from the given axis states.

    Declaration
    public static Vector2 MakeDpadVector(float up, float down, float left, float right)
    Parameters
    Type Name Description
    float up

    Axis value representing the up direction.

    float down

    Axis value representing the down direction.

    float left

    Axis value representing the left direction.

    float right

    Axis value representing the right direction.

    Returns
    Type Description
    Vector2

    A 2D direction vector.

    ReadUnprocessedValueFromState(void*)

    Read value from provided statePtr.

    Declaration
    public override Vector2 ReadUnprocessedValueFromState(void* statePtr)
    Parameters
    Type Name Description
    void* statePtr

    State pointer to read from.

    Returns
    Type Description
    Vector2

    The controls current value.

    Overrides
    Vector2Control.ReadUnprocessedValueFromState(void*)
    Remarks

    Read value from provided statePtr without any caching.

    See Also
    value

    WriteValueIntoState(Vector2, void*)

    Write a value into state at the given memory.

    Declaration
    public override void WriteValueIntoState(Vector2 value, void* statePtr)
    Parameters
    Type Name Description
    Vector2 value

    Value for the control to store in the state.

    void* statePtr

    State containing the control's stateBlock. Will receive the state as converted from the given value.

    Overrides
    Vector2Control.WriteValueIntoState(Vector2, void*)
    Remarks

    Writing values will NOT apply processors to the given value. This can mean that when reading a value from a control after it has been written to its state, the resulting value differs from what was written.

    Exceptions
    Type Condition
    NotSupportedException

    The control does not support writing. This is the case, for example, that compute values (such as the magnitude of a vector).

    See Also
    WriteValueFromBufferIntoState(void*, int, void*)

    Extension Methods

    InputControlExtensions.CheckStateIsAtDefault(InputControl)
    InputControlExtensions.CheckStateIsAtDefault(InputControl, void*, void*)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*, void*)
    InputControlExtensions.CompareStateIgnoringNoise(InputControl, void*)
    InputControlExtensions.FindControlsRecursive<TControl>(InputControl, IList<TControl>, Func<TControl, bool>)
    InputControlExtensions.FindInParentChain<TControl>(InputControl)
    InputControlExtensions.GetStatePtrFromStateEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInState(InputControl, void*)
    InputControlExtensions.IsActuated(InputControl, float)
    InputControlExtensions.IsPressed(InputControl, float)
    InputControlExtensions.ReadDefaultValueAsObject(InputControl)
    InputControlExtensions.ReadValueAsObject(InputControl)
    InputControlExtensions.ReadValueFromEventAsObject(InputControl, InputEventPtr)
    InputControlExtensions.ReadValueIntoBuffer(InputControl, void*, int)
    InputControlExtensions.ResetToDefaultStateInEvent(InputControl, InputEventPtr)
    InputControlExtensions.WriteValueFromObjectIntoEvent(InputControl, InputEventPtr, object)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState(InputControl, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl, TValue, void*)
    InputControlExtensions.QueueValueChange<TValue>(InputControl<TValue>, TValue, double)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl<TValue>, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, TValue, void*)
    InputControlExtensions.WriteValueIntoState<TValue, TState>(InputControl<TValue>, TValue, ref TState)

    Did you find this page useful? Please give it a rating:

    Thanks for rating this page!

    Report a problem on this page

    What kind of problem would you like to report?

    • This page needs code samples
    • Code samples do not work
    • Information is missing
    • Information is incorrect
    • Information is unclear or confusing
    • There is a spelling/grammar error on this page
    • Something else

    Thanks for letting us know! This page has been marked for review based on your feedback.

    If you have time, you can provide more information to help us fix the problem faster.

    Provide more information

    You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:

    You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:

    You've told us there is information missing from this page. Please tell us more about what's missing:

    You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:

    You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:

    You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:

    You've told us this page has a problem. Please tell us more about what's wrong:

    Thank you for helping to make the Unity documentation better!

    Your feedback has been submitted as a ticket for our documentation team to review.

    We are not able to reply to every ticket submitted.

    In This Article
    • Constructors
      • DpadControl()
    • Properties
      • down
      • left
      • right
      • up
    • Methods
      • FinishSetup()
      • MakeDpadVector(bool, bool, bool, bool, bool)
      • MakeDpadVector(float, float, float, float)
      • ReadUnprocessedValueFromState(void*)
      • WriteValueIntoState(Vector2, void*)
    • Extension Methods
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)