Raycast hit not detected on cube

my script is attached to a cube and i am ray casting to check whether the cursor is clicked on the cube.

this is inside my update method-

if(Input.GetMouseButtonUp(0)|Input.GetMouseButtonUp(1)){
		RaycastHit hit;
		Vector3 pos=Input.mousePosition;
		Ray ray=Camera.main.ScreenPointToRay(pos);
		Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
		if(Physics.Raycast(ray, out hit)){
			if(hit.collider!=null&&hit.collider.gameObject.tag=="nextship"){
				ShipMenuController.nextShipSwitch();
			}
		}

	}

THE EFFECT OF THIS code is-
When he cube is clicked, nothing happens and when i click on any other place except the cube, the click is detected.
The click is not detected on the cube but on every other places.

What is the problem?
Any help?

your code is good. Сheck the following questions:

  1. did you set tag “nextship” to your box?

  2. did your box have a boxcollider?

        if (Input.GetMouseButtonUp(0) | Input.GetMouseButtonUp(1))
        {
            RaycastHit hit;
            Vector3 pos = Input.mousePosition;
            Ray ray = Camera.main.ScreenPointToRay(pos);
            Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider != null && hit.collider.gameObject.tag == "nextship")
                {
                    Debug.Log("Clicked");
                }
            }
    
        }