Independence for scripts in clones?

Simply put, I am building up a set of tiles, randomly made up of 25 tiles picked from a "pool" of 7 tile types. These are then instantiated from tile prefabs (1 prefab per type). Each tile has a basic "Tile" script that holds things like the ID of the tile, it's color, and so on.

I thought that since each prefab is a clone, that if I put something like

void Update(){
   if (Input.GetMouseButtonDown(0)) {
       Debug.Log("Tile ID clicked: " + tileID.toString());

that each clone would have it's own script instance, and if you clicked on, for instance, tile 10 (tileID=10), the above would produce "Tile ID clicked: 10".

But when I run this, any click, anywhere in the screen seems to call Update() for ALL of the cloned prefabs, in addition to being called even when I am clicking nowhere near the prefabs. So, if I have 5 tiles cloned, I get: "Tile ID clicked: 1 Tile ID clicked: 2 Tile ID clicked: 3 Tile ID clicked: 4 Tile ID clicked: 5"

Is it possible to only call the script on the particular clone that was clicked?


You're using Input.GetMouseButtonDown, which just tells you if the mouse button is pressed, nothing else. Presumably you're looking for the OnMouseDown function instead.