GUI Issues

Hello, I’m attempting to make a health class were I can just access methods and setup health for multiple objects without copy/pasting the health script multiple times, I have it working except with gui. The gui should display the name of an object with health, how much current health it has along with maxhealth. The issue arises when using the gui function Here is the health script:

using UnityEngine;
using System.Collections;

public class Health{
	private static int curLifes;
	private static int maxLifes;
	private static int minLifes;
	private static double maxHealth;
	private static double curHealth;
	private static double minHealth;
	private static Vector3 spawnPoint;
	private static Rect healthGuiPos; 
	private static string healthLabel;
	private bool showHealthGUI;

	public void healthGUI(){
		if(showHealthGUI == true){
			GUI.Label(healthGuiPos, healthLabel + ": " + curHealth + "/" + maxHealth);
		}
	}
	public void setMaxHealth(double maximimhealth){
		maxHealth = maximimhealth;
	}
	public void setMinHealth(double minimumhealth)
	{
		minHealth = minimumhealth ;
	}
	public void setCurHealth(double health){
		curHealth = health;
	}
	public void setSpawnPoint(Vector3 spawnpoint){
		spawnPoint = spawnpoint;
	}

	public void setCurLifes(int lifes)
	{
		curLifes = lifes; 
	}
	public void setMaxLifes(int maxlifes)
	{
		maxLifes = maxlifes;
	}

	public void setMinHealth(int minlifes)
	{
		minLifes = minlifes;
	}
	public void applyDamage(float damage)
	{
		curHealth = curHealth - damage;
	}

	public void Death(GameObject Entity){
		curLifes--;
		curHealth = maxHealth;
		Respawn (Entity);
	}

	public void Respawn(GameObject Entity){
		Entity.gameObject.transform.position = spawnPoint;
	}
	public void setHealthGUILocation(Rect POS)
	{
		healthGuiPos = POS;
	}
	public void setHealthLabel(string HealthLabel)
	{
		healthLabel = HealthLabel;
	}
	public void healthActive(GameObject Entity){
		if(curHealth >= maxHealth)
		{
			curHealth = maxHealth;
		}
		if(curHealth <= minHealth)
		{
			curHealth = minHealth;
			Death (Entity);
		}
		if(curLifes >= maxLifes)
		{
			curLifes = maxLifes;
		}
		if(curLifes <= minLifes)
		{
			curLifes = minLifes;
		}
	}

}

Here is the script I attach to the player:

using UnityEngine;
using System.Collections;

public class TestScript : MonoBehaviour {
	public static Health test = new Health();
	public GameObject Player;
	// Use this for initialization
	void Start () {
		test.setMaxHealth(100);
		test.setMinHealth (0);
		test.setHealthGUILocation(new Rect(10,10,100,100));
		test.setHealthLabel(Player.name);
		test.setSpawnPoint (new Vector3(1046, 4, 685));
		test.showHealthGUI = true;

	}
	
	// Update is called once per frame
	void Update () {
		test.healthActive (Player);
		if(Input.GetKeyDown(KeyCode.K))
		{
			test.applyDamage (100);
			test.Death (Player);
		}
	}
	void OnGUI(){
		test.healthGUI ();
	}
	}

And here is the script on the zombie:

enter code hereusing UnityEngine;
using System.Collections;

public class ZombieAI : MonoBehaviour {
	public static Health zombie = new Health();
	public GameObject Zombie;

	void Start()
	{
		zombie.setMaxHealth(100);
		zombie.setMinHealth (0);
		zombie.setSpawnPoint (new Vector3(1046, 4, 685));
		zombie.setHealthGUILocation(new Rect(70,70,100,100));
		zombie.setHealthLabel(Zombie.name);
		zombie.showHealthGUI = true;
	}
	void Update () {
		zombie.healthActive (Zombie);
		if(Input.GetKeyDown(KeyCode.P))
		{
			zombie.applyDamage (100);
			zombie.Death (Zombie);
		}
	}
	void OnGUI(){
		zombie.healthGUI ();
	}
}

What should happen is that two labels are made, one being named Player(Clone) and the other being Zombie(Clone) but instead one label is made saying “Zombie(Clone)”, I know the health is working because you press “P” it kills the zombie and you press “K” it kills the player, Here is a link to it (terrain is missing for some reason, thats another issue though)

Can you remove static from all variables in your Health script