docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class ButtonWithOneModifier

    A button with an additional modifier. The button only triggers when the modifier is pressed.

    Inheritance
    object
    InputBindingComposite
    InputBindingComposite<float>
    ButtonWithOneModifier
    Inherited Members
    InputBindingComposite<float>.valueType
    InputBindingComposite<float>.valueSizeInBytes
    InputBindingComposite<float>.ReadValue(ref InputBindingCompositeContext, void*, int)
    InputBindingComposite<float>.ReadValueAsObject(ref InputBindingCompositeContext)
    InputBindingComposite.GetExpectedControlLayoutName(string, string)
    Namespace: UnityEngine.InputSystem.Composites
    Assembly: Unity.InputSystem.dll
    Syntax
    [DisplayStringFormat("{modifier}+{button}")]
    public class ButtonWithOneModifier : InputBindingComposite<float>
    Remarks

    This composite can be used to require another button to be held while pressing the button that triggers the action. This is most commonly used on keyboards to require one of the modifier keys (shift, ctrl, or alt) to be held in combination with another key, e.g. "CTRL+1".

    // Create a button action that triggers when CTRL+1
    // is pressed on the keyboard.
    var action = new InputAction(type: InputActionType.Button);
    action.AddCompositeBinding("ButtonWithOneModifier")
        .With("Modifier", "<Keyboard>/leftCtrl")
        .With("Modifier", "<Keyboard>/rightControl")
        .With("Button", "<Keyboard>/1")

    Note that this is not restricted to the keyboard and will preserve the full value of the button.

    // Create a button action that requires the A button on the
    // gamepad to be held and will then trigger from the gamepad's
    // left trigger button.
    var action = new InputAction(type: InputActionType.Button);
    action.AddCompositeBinding("ButtonWithOneModifier")
        .With("Modifier", "<Gamepad>/buttonSouth")
        .With("Button", "<Gamepad>/leftTrigger");

    Fields

    button

    Binding for the button that is gated by the modifier. The composite will assume the value of this button while the modifier is pressed.

    Declaration
    public int button
    Field Value
    Type Description
    int

    Part index to use with ReadValue<TValue>(int).

    Remarks

    This property is automatically assigned by the input system.

    See Also
    ButtonWithTwoModifiers

    modifier

    Binding for the button that acts as a modifier, e.g. <Keyboard/leftCtrl.

    Declaration
    public int modifier
    Field Value
    Type Description
    int

    Part index to use with ReadValue<TValue>(int).

    Remarks

    This property is automatically assigned by the input system.

    See Also
    ButtonWithTwoModifiers

    overrideModifiersNeedToBePressedFirst

    If set to true, modifier can be pressed after button and the composite will still trigger. Default is false.

    Declaration
    public bool overrideModifiersNeedToBePressedFirst
    Field Value
    Type Description
    bool
    Remarks

    By default, modifier is required to be in pressed state before or at the same time that button goes into pressed state for the composite as a whole to trigger. This means that binding to, for example, Shift+B, the shift key has to be pressed before pressing the B key. This is the behavior usually expected with keyboard shortcuts.

    This parameter can be used to bypass this behavior and allow any timing between modifier and button. The only requirement is for them both to concurrently be in pressed state.

    See Also
    ButtonWithTwoModifiers

    Methods

    EvaluateMagnitude(ref InputBindingCompositeContext)

    Same as ReadValue(ref InputBindingCompositeContext) in this case.

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

    Evaluation context passed in from the input system.

    Returns
    Type Description
    float

    A >0 value if the composite is currently actuated.

    Overrides
    InputBindingComposite.EvaluateMagnitude(ref InputBindingCompositeContext)
    See Also
    ButtonWithTwoModifiers

    FinishSetup(ref InputBindingCompositeContext)

    Called after binding resolution for an InputActionMap is complete.

    Declaration
    protected override void FinishSetup(ref InputBindingCompositeContext context)
    Parameters
    Type Name Description
    InputBindingCompositeContext context
    Overrides
    InputBindingComposite.FinishSetup(ref InputBindingCompositeContext)
    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);
         }</code></pre></example>
    
    See Also
    ButtonWithTwoModifiers

    ReadValue(ref InputBindingCompositeContext)

    Return the value of the button part if modifier is pressed. Otherwise return 0.

    Declaration
    public override float ReadValue(ref InputBindingCompositeContext context)
    Parameters
    Type Name Description
    InputBindingCompositeContext context

    Evaluation context passed in from the input system.

    Returns
    Type Description
    float

    The current value of the composite.

    Overrides
    InputBindingComposite<float>.ReadValue(ref InputBindingCompositeContext)
    See Also
    ButtonWithTwoModifiers

    See Also

    ButtonWithTwoModifiers
    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)