using TMPro; using UnityEngine; public class UiManager : MonoBehaviour { [SerializeField] private TextMeshProUGUI _totalCoins; [SerializeField] private GameObject _keyIcon; private PlayerState _playerState; // Start is called before the first frame update void Start() { _playerState = GetComponent(); if (_playerState != null) { _playerState.OnPlayerTakeItem += UpdateUi; } } private void UpdateUi(object sender, TreasureType e) { switch (e) { case TreasureType.Coin: _totalCoins.text = _playerState.TotalCoins.ToString(); break; case TreasureType.Key: _keyIcon.SetActive(true); break; } } void OnDestroy() { if (_playerState != null) { _playerState.OnPlayerTakeItem -= UpdateUi; } } }