GetMouseButtonUp not working properly

Hello!!

Maybe (or most likely) it’s a noob mistake, but I’ve been having problems with Input.GetMouseButtonUp.

When I started making the script I hadn’t problems but now it doesn’t recognice the input sometimes.

I’m using Update() (Not FixedUpdate())

Some pseudocode of my script would be something like this:

void Update(){

     If GetMouseButtonDown{start time pressed}

     If (!long time pressed){++ time)

     If GetMouseButtonUp{

          If/Else long time pressed {do one thing or another}

          Clear Variables() //So it doesn't keep adding time 

     }

}

The problem isn’t the variable clean, maybe I could write when the mouse is clicked, but if the realease is not made then the really effective functions won’t be called.

What other things may be causing that it’s not called?

I’m using C sharp and one of the latest 2017 versions of Unity, in case it helps.

Thanks in advance for your help, and I’m sorry if I haven’t explained well the problem or if I made some languaje mistakes.

Are you, by chance, using “if/elseif” instead of “if/else”?

Try using Debug.Log instead of your if/else to verify that the Input.GetMouseButtonUp() actually does trigger every time. If it does not trigger every time, then something is preventing your script from reaching the buttonUp check.

Consider this:

 void Update(){
      If(Input.GetMouseButtonUp(0)){
           // This debug will ALWAYS output the same frame the left mouse button is released
           Debug.Log("Left mouse button released");

           // The following may actually not do anything
           If(something){
               // This may or may not trigger
           }else if(something else){
               // This may or may not trigger
           }

           // The following WILL do something
           If(something){
               // This may or may not trigger
           }else {
               // This will ALWAYS trigger when the other did not
           }

           Clear Variables();
      }
}