Player.cs
using System; using UnityEngine; public class Player : MonoBehaviour { public static event Action<int> _HealthUpdateEvent; int health = 100; public void GainHealth() { health = Mathf.Clamp(health + 10,0,100); if(_HealthUpdateEvent!=null) { _HealthUpdateEvent(health); } } public void LooseHealth() { health = Mathf.Clamp(health - 10, 0, 100); if (_HealthUpdateEvent != null) { _HealthUpdateEvent(health); } } }
HealthDisplay.cs
using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Text))] public class HealthDisplay : MonoBehaviour { Text healthValueText; void Awake() { healthValueText = GetComponent<Text>(); } void OnEnable() { Player._HealthUpdateEvent += UpdateHealth; } void OnDisable() { Player._HealthUpdateEvent -= UpdateHealth; } void UpdateHealth(int value) { healthValueText.text = value.ToString("000") + " / 100"; } }