How do I Instantiate a prefab to touch and still update a score?

So, right now In have a random generator that generates a random location and Instantiates a prefab there. What I am trying to do is get it so when I touch the object (prefab object) I want the score to go up by one and the object to disappear.

Right now the score is also a prefab that I Instantiate on start up so it can be set as a variable of the object prefab, but this only updates the score when I play then stop and play again.

Does anyone have a better way of doing this or a way to fix this? Thanks.

Scripts:

Random object generator:

var scoreGui : GUIText;
var myobject : Transform;
var minWait = 1.0;
var maxWait = 5.0;

function Start ()
{
    Instantiate (scoreGui);
    while(true)
    {
        yield WaitForSeconds(Random.Range(minWait, maxWait));
        Spawn();
    }
}  

function Spawn ()
{
    var position = Vector3(Random.Range(-18, 18), 2.5, Random.Range(-10, 10));

    Instantiate (myobject, position, transform.rotation);
}

Score Script:

var scoreGui : GUIText;
var score = PlayerPrefs.GetInt("Score");

public function Start()
{
    UpdateScoreGui();
}
function UpdateScoreGui()
{
    scoreGui.text = "Current Score: " + score;
}
function AddPoint () {
    score++;
    UpdateScoreGui();
}

Object Script:

var other : GameObject;

function OnMouseDown(){
    var sa : ScoreScript = other.GetComponent( ScoreScript );
    sa.AddPoint();
    Destroy(gameObject);
}

I used GameObject.Find when the object was spawn in order to find to object to send the message to update the score.