Instantiate Object Once at a time

I’m generating an object on MouseDown. But if user keeps on clicking fast this became a problem. I want to put a block until that Instantiated object is destroyed after collision.

void Update(){
Projectile clone = Instantiate (egg, transform.position, Quaternion.identity)as Projectile;
}

And in Projectile.cs it is simply checking if collision occurs it destroys the object. Not how to add a check on Instantiate?

private Projectile clone = null;

void Update()
{
    if (clone == null)
    {
        clone = Instantiate(egg, transform.position, Quaternion.identity) as Projectile;
    }
}

When the collision happens:

void OnCollision()
{
    Destroy(clone.gameObject);
    clone = null;
}