Иногда метод OnMouseDown () в Unity выполняется, иногда нет

Итак, у меня есть этот код, прикрепленный к Quad.

public class ShapeGrid : MonoBehaviour {

public GameObject[] shapes;

void Start(){
    GameObject[,] shapeGrid = new GameObject[3,3];
    StartCoroutine(UpdateGrid());
}

IEnumerator UpdateGrid(){
    while (true) {
        SetGrid ();
        yield return new WaitForSeconds(2);
    }
}

void SetGrid(){
    int col = 3, row = 3;
    for (int y = 0; y < row; y++) {
        for (int x = 0; x < col; x++) {
            int shapeId = (int)Random.Range (0, 4.9999f);
            GameObject shape = Instantiate (shapes[shapeId]);
            shape.AddComponent<ShapeBehavior>();
            Vector3 pos = shapes [shapeId].transform.position;
            pos.x = (float)x*3;
            pos.y = (float)y*3;
            shapes [shapeId].transform.position = pos;
        }
    }
}

Приведенный выше скрипт генерирует игровые объекты во время выполнения, которому я назначил другой скрипт:

public class ShapeBehavior : MonoBehaviour {

    void OnMouseDown(){
        Debug.Log ("Destroy");
        Destroy (gameObject);
    }
}

Проблема в том, что иногда OnMouseDown () выполняется, иногда нет. Я не могу понять, почему и как это исправить.

Ответы на вопрос(2)

Ваш ответ на вопрос