Managing Inputs

The asset utilizes the Unity Input System package, which means modifying inputs may differ from the old built-in Unity Input System. If you're unfamiliar with setting up the Input System package, please refer to the guide provided below.

Setting up Input System
  1. Locate the PlayerControls asset within the UHFPS -> Scriptables -> Input folder. To open the Input Actions window, double-click on the asset.

After opening the Input Actions window, you may notice that the action names follow the input.action.something pattern. This was in fact used as localization keys in previous versions of UHFPS. In the latest version of the asset this has been replaced with a better solution, so now it's up to you to name the inputs to your liking.

  1. To create a new input action, simply click on the (+) icon found to the right of the Actions tab name. Enter the name of the action in the localization key pattern.

Input names containing an asterisk (*) will be automatically excluded from menu display and serialization. For instance, input.action.look* will be disregarded.

  1. Select the newly created action and modify the Action Type to the desired input type.

  1. Next, click on the <No Binding> and choose the key you want your action to utilize.

  1. If you are using a custom controls asset, ensure that you assign the reference to this asset within the Input Manager component.

  1. In order to access input actions within a script, simply use the Input Manager functions. There are multiple ways to utilize the input.

using UnityEngine;
using UHFPS.Input;

private void Update()
{
    if (InputManager.ReadButtonToggle(this, Controls.CROUCH))
    {
        // do something when toggled on
        // even if you don't hold any button
    }

    if (InputManager.ReadButtonOnce(this, Controls.FIRE))
    {
        // do something once as button
    }

    if (InputManager.ReadButton(Controls.FIRE))
    {
        // do something every update as button
    }

    if(InputManager.ReadInput(Controls.LEAN, out float direction))
    {
        // do something every update with value
    }
}

You can find a script called Controls, which stores all the input names so that you don't have to keep typing out the whole input name over and over again.

Last updated