> the PlayerInput component, and reading values via callbacks or polling. Use when the project has a .inputactions asset or com.unity.inputsystem, or when the user mentions the Unity Input System, InputAction, action maps, PlayerInput, control schemes, or rebinding.
npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill unity-input-system
Read input through Unity's Input System package (com.unity.inputsystem, 1.x) —
action-based, device-agnostic, rebindable. Targets Unity 6. This is the modern
replacement for the legacy Input.GetAxis/Input.GetKey Input Manager.
.inputactions asset withaction maps and control schemes, wiring a PlayerInput component, reading a Vector2
stick/WASD value, or handling gamepad + keyboard + touch from one set of actions.
Packages/manifest.json contains com.unity.inputsystem or the project has an*.inputactions asset.
When *not* to use: rebindable-control *architecture* across engines → input-systems
(this skill is the Unity-specific API). Moving the character once you have the input vector
→ unity-physics / unity-csharp-scripting.
input when this is Input System Package (New) or Both. Both is required if any old
Input.GetAxis code remains.
.inputactions asset. Add an *action map* (e.g. Gameplay), add *actions*(Move = Value/Vector2, Jump = Button, Fire = Button), and bind them to controls and
composite bindings (WASD = 2D Vector composite).
PlayerInput component (designer-friendly) — drop it on the player, point it at theasset, pick a *Behavior* (Send Messages / Broadcast / Invoke Unity Events / Invoke C#
Events). Best for single/local-coop players.
InputActionReference / InputActionAsset) — most control; youEnable() actions and read them. Best for systems and tools.
PlayerInput enables its default map automatically;actions you reference yourself must be .Enable()d (and disabled on teardown).
and that actions fire.
PlayerInput with "Send Messages" (handlers on the same GameObject)using UnityEngine;
using UnityEngine.InputSystem;
// PlayerInput (Behavior = Send Messages) calls On<ActionName>(InputValue) by name.
public class PlayerInputReceiver : MonoBehaviour
{
private Vector2 _move;
private void OnMove(InputValue value) => _move = value.Get<Vector2>(); // Move action
private void OnJump(InputValue value) { if (value.isPressed) Jump(); } // Button action
private void Update() { /* drive movement from _move */ }
private void Jump() { }
}
using UnityEngine;
using UnityEngine.InputSystem;
public class DirectMover : MonoBehaviour
{
[SerializeField] private InputActionReference moveAction; // assign the Move action
private void OnEnable() => moveAction.action.Enable(); // REQUIRED or it reads zero
private void OnDisable() => moveAction.action.Disable();
private void Update()
{
Vector2 move = moveAction.action.ReadValue<Vector2>(); // continuous value
transform.Translate(new Vector3(move.x, 0, move.y) * (5f * Time.deltaTime));
}
}
[SerializeField] private InputActionAsset actions;
private void OnEnable()
{
actions.FindAction("Gameplay/Fire").performed += OnFire; // edge event: fires once
actions.FindActionMap("Gameplay").Enable();
}
private void OnDisable() => actions.FindAction("Gameplay/Fire").performed -= OnFire;
private void OnFire(InputAction.CallbackContext ctx) => Shoot(); // ctx.ReadValue<T>() if needed
private void OpenPauseMenu() // change context, don't sprinkle if-checks
{
actions.FindActionMap("Gameplay").Disable();
actions.FindActionMap("UI").Enable();
}
private void Shoot() { }
Input Manager (Old), or youforgot to Enable() the action/map. PlayerInput auto-enables; raw InputActions do not.
InvalidOperationException about the old input backend → some script still callsInput.GetAxis/Input.GetKey while Active Input Handling is New. Port it or set Both.
ReadValue → button *presses* are edge events; use theperformed callback (or WasPressedThisFrame()), not per-frame ReadValue for triggers.
Send Messages handlers never fire → the receiving script must be on the *same*GameObject as the PlayerInput; Broadcast Messages reaches children too.
-=) in OnDisable; re-subscribing in OnEnablewithout unsubscribing doubles up handlers.
in the Input Debugger; the Vector2 composite needs all four bindings set.
PerformInteractiveRebinding), saving/loadingbindings as JSON, and local multiplayer with PlayerInputManager, read
references/rebinding.md.
(https://docs.unity3d.com/Manual/com.unity.inputsystem.html).
input-systems — engine-agnostic input architecture (rebinding, buffering, multi-device).unity-csharp-scripting — the MonoBehaviour these handlers live in.unity-physics — applying the input vector to a Rigidbody.Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take gamedev-skills/unity-input-system from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.