Scoreboard will not update

I am brand new to unity and trying to make a simple scoreboard. When a collision occurs, however the scoreboard does not change. Please help. Here is part of the code:

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour {
	public GameObject enemy;
	public GameObject laser;
	public GUIText gamerscore;
	float spawnTimer;
	float shootTimer;
	int score;

	// Use this for initialization
	void Start () {
		Instantiate (gamerscore);
		spawnTimer = 1.0f;
		score = 0;
		updatescore ();
	}
	public void addscore(int addnum){
		
		score += addnum;
		updatescore ();
	}
	
	void updatescore(){
		
		gamerscore.text = score.ToString();
	}

and

public class EnemyController : MonoBehaviour {
	public float speed;

	public GameObject explosion;
	public int score;
	GameController gameController;
	// Use this for initialization
	void Start () {

		GameObject gameref = GameObject.FindWithTag ("MainCamera");
		if (gameref != null) {
						gameController = gameref.GetComponent<GameController> ();
				}
		if (gameref == null) {
			Debug.Log("GameController not found");
				}
				 
	}
	
	void OnCollisionEnter(Collision other)
	{
		if (other.gameObject.tag.Equals("Laser"))
		{
			Destroy(other.gameObject);
			Destroy(this.gameObject);
			Instantiate(explosion, this.transform.position, this.transform.rotation);
			gameController.addscore(score);

		}
	}

The problem is that the gamerscore references the prefab, not the newly created gameobject.

When you write

Instantiate (gamerscore);

You are creating a new copy of that prefab, but you did not store that copy anywhere, so you do not have a reference.

Later, when updatescore() is called,

void updatescore()
{
    gamerscore.text = score.ToString();
}

you try to change a value on the prefab, not the object you created.

Instead, you will need two variables

public GUIText gamerScorePrefab;
private GUIText gamerScore;

When you instantiate the object, instead write

GameObject newGamerScore = Instantiate(gamerScorePrefab.gameObject) as GameObject;
gamerScore = newGamerScore.GetComponent<GUIText>();

Then when you update the score,

gamerScore.text = score.ToString();

you are now referencing the object you created, instead of the prefab.