You click. Nothing happens. No laser beam. No gunshot. No button press. Just silence. If you are using Unity’s New Input System and your left click is not working, do not panic. This is a very common issue. And yes, it is fixable.
TL;DR: Most left-click issues happen because your Input Actions are not enabled, your Player Input component is misconfigured, or your action bindings are wrong. Double-check that your Input System package is active, your control scheme includes Mouse, and your action map is enabled in code. Also verify that your script is actually listening to the correct action. In 90% of cases, the fix is one small checkbox or missing line of code.
First, Make Sure You Are Actually Using the New Input System
This sounds obvious. But Unity can quietly use the old Input Manager instead.
Check this first:
- Go to Edit → Project Settings → Player
- Scroll to Active Input Handling
- Select Input System Package (New) or Both
If it is set to Input Manager (Old), your new input actions will not fire.
Restart Unity after changing this setting. Yes, you must restart.
Is Your Left Click Binding Actually There?
Open your Input Actions asset.
Look inside your Action Map. Find your “Fire” or “Click” action.
- Check that Action Type is set properly:
- Button for clicks
- Check that Binding includes:
- <Mouse>/leftButton
You would be surprised how often people forget to add the actual Mouse binding.
Image not found in postmetaTip: Click the “Listen” button in the binding and press left click. Unity should auto-detect it.
Did You Enable the Input Actions?
This is the number one issue.
Creating Input Actions is not enough. You must enable them.
If you generated a C# class from your Input Actions, you need something like this:
private PlayerControls controls;
private void Awake()
{
controls = new PlayerControls();
}
private void OnEnable()
{
controls.Enable();
}
private void OnDisable()
{
controls.Disable();
}
If you forget controls.Enable(), nothing works. Zero. Silence.
If You Use Player Input Component
The Player Input component is powerful. But also sneaky.
Select your Player object and check:
- Is the correct Input Actions asset assigned?
- Is Default Map set correctly?
- Is Behavior set properly?
You will usually use one of these behaviors:
- Send Messages
- Invoke Unity Events
- Invoke C# Events
If you use Send Messages, your method must match this format:
public void OnFire()
{
Debug.Log("Left click works!");
}
The method name must match the action name with “On” in front.
No match? No click detection.
Are You Reading the Input Correctly?
Another common mistake is reading the value incorrectly.
For button actions, use:
controls.Player.Fire.performed += ctx => Fire();
Or check like this:
if (controls.Player.Fire.triggered)
{
Fire();
}
Do not use ReadValue<float>() unless you know what you are doing.
Buttons behave differently than value inputs.
Is Your UI Blocking the Click?
Sometimes your click works.
But Unity UI eats it.
If you are clicking through UI elements, they may block raycasts.
Check:
- Is there a fullscreen Panel?
- Does it have Raycast Target enabled?
- Is Graphic Raycaster active?
Disable Raycast Target on decorative UI elements.
Also verify you are not confusing:
- UI Input Module
- Standalone Input Module
If you use the New Input System, you need Input System UI Input Module.
Control Schemes Might Be the Culprit
If you defined control schemes, your Mouse might not be included.
Open Input Actions → Control Schemes.
Ensure your scheme includes:
- Mouse
- Keyboard (if needed)
If your scheme only includes Gamepad, left click will never fire.
This is very common in multiplayer setups.
Comparison: Old Input vs New Input System
Still unsure what is wrong? Let us compare behavior.
| Feature | Old Input Manager | New Input System |
|---|---|---|
| Enable Required? | No | Yes |
| Setup Complexity | Simple | Moderate |
| Multiple Devices | Limited | Excellent |
| Common Left Click Issue | Rare | Usually missing Enable() |
The new system is better. But it demands correct setup.
Are You Mixing Old and New Input Calls?
This is dangerous territory.
If you use:
Input.GetMouseButtonDown(0);
You are using the old system.
And if Active Input Handling is set to “Input System Package Only,” that call will not work.
Pick one system. Do not casually mix them.
Is Your Camera Setup Blocking Raycasts?
If you detect clicks using raycasts, your problem may not be input.
It may be physics.
Check:
- Does your object have a Collider?
- Is it on the correct Layer?
- Is your raycast using the correct LayerMask?
Also ensure your camera is tagged as MainCamera if you rely on Camera.main.
Test With a Simple Debug
When things break, simplify.
Create a new empty GameObject.
Attach this script:
using UnityEngine;
using UnityEngine.InputSystem;
public class ClickTest : MonoBehaviour
{
void Update()
{
if (Mouse.current.leftButton.wasPressedThisFrame)
{
Debug.Log("Left click detected!");
}
}
}
If this works, your Input System is fine.
The problem is in your Action setup.
If this does not work, your Input System configuration is wrong.
Checklist: Quick Fix Guide
Run through this fast checklist:
- ✅ Active Input Handling set correctly
- ✅ Input Actions asset assigned
- ✅ <Mouse>/leftButton binding exists
- ✅ controls.Enable() is called
- ✅ Correct Action Map selected
- ✅ Mouse included in Control Scheme
- ✅ UI not blocking raycasts
If all are true, your left click will work.
Why This Happens So Often
The New Input System is modular.
That is good.
But modular means more moving parts.
You must:
- Create actions
- Bind devices
- Enable maps
- Hook callbacks
- Select control schemes
Miss one step? Nothing works.
The old system was simple. The new one is powerful.
Power comes with setup.
Final Thoughts
If your Unity New Input System left click is not working, do not assume your project is broken.
It is almost always one of these:
- A missing Enable()
- A wrong binding
- A misconfigured Player Input
- A control scheme issue
Take a deep breath.
Check each piece slowly.
Test with simple Debug.Log calls.
And remember: when nothing happens in Unity, it usually means one small checkbox is unchecked.
Now go make that click count.