docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class InputBindingComposite

    A binding that synthesizes a value from from several component bindings.

    Inheritance
    object
    InputBindingComposite
    OneModifierComposite
    TwoModifiersComposite
    InputBindingComposite<TValue>
    Namespace: UnityEngine.InputSystem
    Assembly: Unity.InputSystem.dll
    Syntax
    public abstract class InputBindingComposite
    Remarks

    This is the base class for composite bindings. See InputBindingComposite<TValue> for more details about composites and for how to define custom composites.

    Properties

    valueSizeInBytes

    Size of a value read by ReadValue(ref InputBindingCompositeContext, void*, int).

    Declaration
    public abstract int valueSizeInBytes { get; }
    Property Value
    Type Description
    int

    Size of values stored in memory buffers by ReadValue(ref InputBindingCompositeContext, void*, int).

    Remarks

    This is usually implicitly defined by the size of values derived from the type argument to InputBindingComposite<TValue>. E.g. if the type argument is Vector2, this property will be 8.

    See Also
    valueSizeInBytes
    valueSizeInBytes

    valueType

    The type of value returned by the composite.

    Declaration
    public abstract Type valueType { get; }
    Property Value
    Type Description
    Type

    Type of value returned by the composite.

    Remarks

    Just like each InputControl has a specific type of value it will return, each composite has a specific type of value it will return. This is usually implicitly defined by the type parameter of InputBindingComposite<TValue>.

    See Also
    valueType
    valueType

    Methods

    EvaluateMagnitude(ref InputBindingCompositeContext)

    Determine the current level of actuation of the composite.

    Declaration
    public virtual float EvaluateMagnitude(ref InputBindingCompositeContext context)
    Parameters
    Type Name Description
    InputBindingCompositeContext context

    Callback context for the binding composite. Use this to access the values supplied by part bindings.

    Returns
    Type Description
    float
    Remarks

    This method by default returns -1, meaning that the composite does not support magnitudes. You can override the method to add support for magnitudes.

    See EvaluateMagnitude() for details of how magnitudes work.

    See Also
    EvaluateMagnitude()

    FinishSetup(ref InputBindingCompositeContext)

    Called after binding resolution for an InputActionMap is complete.

    Declaration
    protected virtual void FinishSetup(ref InputBindingCompositeContext context)
    Parameters
    Type Name Description
    InputBindingCompositeContext context
    Remarks

    Some composites do not have predetermine value types. Two examples of this are OneModifierComposite and TwoModifiersComposite, which both have a "binding" part that can be bound to arbitrary controls. This means that the value type of these bindings can only be determined at runtime.

    Overriding this method allows accessing the actual controls bound to each part at runtime.

    [InputControl] public int binding;
    

    protected override void FinishSetup(ref InputBindingContext context) { // Get all controls bound to the 'binding' part. var controls = context.controls .Where(x => x.part == binding) .Select(x => x.control); }

    See Also
    RegisterBindingComposite<T>(string)
    GetParameterValue(InputAction, string, InputBinding)
    ApplyParameterOverride(InputActionMap, string, PrimitiveValue, InputBinding)
    isComposite

    GetExpectedControlLayoutName(string, string)

    Return the name of the control layout that is expected for the given part (e.g. "Up") on the given composite (e.g. "Dpad").

    Declaration
    public static string GetExpectedControlLayoutName(string composite, string part)
    Parameters
    Type Name Description
    string composite

    Registration name of the composite.

    string part

    Name of the part.

    Returns
    Type Description
    string

    The layout name (such as "Button") expected for the given part on the composite or null if there is no composite with the given name or no part on the composite with the given name.

    Remarks

    Expected control layouts can be set on composite parts by setting the layout property on them.

    Examples
    InputBindingComposite.GetExpectedControlLayoutName("Dpad", "Up") // Returns "Button"
    
    // This is how Dpad communicates that:
    [InputControl(layout = "Button")] public int up;
    See Also
    RegisterBindingComposite<T>(string)
    GetParameterValue(InputAction, string, InputBinding)
    ApplyParameterOverride(InputActionMap, string, PrimitiveValue, InputBinding)
    isComposite

    ReadValue(ref InputBindingCompositeContext, void*, int)

    Read a value from the composite without having to know the value type (unlike ReadValue(ref InputBindingCompositeContext) and without allocating GC heap memory (unlike ReadValueAsObject(ref InputBindingCompositeContext)).

    Declaration
    public abstract void ReadValue(ref InputBindingCompositeContext context, void* buffer, int bufferSize)
    Parameters
    Type Name Description
    InputBindingCompositeContext context

    Callback context for the binding composite. Use this to access the values supplied by part bindings.

    void* buffer

    Buffer that receives the value read for the composite.

    int bufferSize

    Size of the buffer allocated at buffer.

    Remarks

    This API will be used if someone calls ReadValue(void*, int) with the action leading to the composite.

    By deriving from InputBindingComposite<TValue>, this will automatically be implemented for you.

    Exceptions
    Type Condition
    ArgumentException

    bufferSize is smaller than valueSizeInBytes.

    ArgumentNullException

    buffer is null.

    See Also
    ReadValue(void*, int)

    ReadValueAsObject(ref InputBindingCompositeContext)

    Read the value of the composite as a boxed object. This allows reading the value without having to know the value type and without having to deal with raw byte buffers.

    Declaration
    public abstract object ReadValueAsObject(ref InputBindingCompositeContext context)
    Parameters
    Type Name Description
    InputBindingCompositeContext context

    Callback context for the binding composite. Use this to access the values supplied by part bindings.

    Returns
    Type Description
    object

    The current value of the composite according to the state passed in through context.

    Remarks

    This API will be used if someone calls ReadValueAsObject() with the action leading to the composite.

    By deriving from InputBindingComposite<TValue>, this will automatically be implemented for you.

    See Also
    RegisterBindingComposite<T>(string)
    GetParameterValue(InputAction, string, InputBinding)
    ApplyParameterOverride(InputActionMap, string, PrimitiveValue, InputBinding)
    isComposite

    See Also

    RegisterBindingComposite<T>(string)
    GetParameterValue(InputAction, string, InputBinding)
    ApplyParameterOverride(InputActionMap, string, PrimitiveValue, InputBinding)
    isComposite
    In This Article
    Back to top
    Copyright © 2024 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)