using UnityEngine; using UnityEngine.UI; using System.Collections; /// /// 金币 UI 显示,显示在屏幕右上角 /// [RequireComponent(typeof(Text))] public class GoldUI : MonoBehaviour { private Text goldText; private bool isSubscribed = false; private void Awake() { goldText = GetComponent(); } private void Start() { // 延迟订阅,确保 GoldManager 已初始化 StartCoroutine(SubscribeToGoldManager()); } private IEnumerator SubscribeToGoldManager() { // 等待 GoldManager 初始化 while (GoldManager.Instance == null) { yield return null; } // 订阅事件 GoldManager.Instance.OnGoldChanged += UpdateGoldDisplay; isSubscribed = true; // 立即更新显示 UpdateGoldDisplay(GoldManager.Instance.CurrentGold); } private void OnDestroy() { // 取消订阅 if (isSubscribed && GoldManager.Instance != null) { GoldManager.Instance.OnGoldChanged -= UpdateGoldDisplay; } } private void UpdateGoldDisplay(int newGold) { if (goldText != null) { goldText.text = newGold.ToString(); } } }