Problem with delegates C#

Hello everyone,
I need some help please. I am making an fps and using delegates in script. I want to kill some zombies, it works fine at first but when one of the zombies is dead, whenever I shoot another one, I get an error telling me that I can"t access the health component because it was destroyed.
Here my code for the health script:

public class ZombieHealth : MonoBehaviour {

public delegate void EnemyKilled(GameObject gameObject);
public static event EnemyKilled OnEnemyKilled;

public int zombieHealth = 50;

// Use this for initialization
void Start () {
	GUIMaster.OnFireButtonPressed += Shoot;

// Update is called once per frame
void Update () {


void EnemiesKilled(GameObject gameObject){

void Shoot(bool isHit,GameObject hitZombie, int damage){
	if(isHit&&hitZombie.GetInstanceID() == gameObject.GetInstanceID()){

This is the code of the triggered event from the GUIMaster script, that the ZombieHealth script is listening to:

void Shoot(){
			if(Physics.Raycast(ejectingPort,out hit,10f,layerMask)){

When you subscribe to a event, don’t forget to unsubsribe. Otherwise you’ll try to call the delegate on a component that has been destroyed… (And you’ll probably get memory leaks)

Adding this should work.

void OnDestroy()
     GUIMaster.OnFireButtonPressed -= Shoot;