CoinDisplayManager.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using UnityEngine;
  2. using TMPro;
  3. using Player.Wallet;
  4. using UnityEngine.SceneManagement;
  5. public class CoinDisplayManager : MonoBehaviour
  6. {
  7. [SerializeField] private TextMeshProUGUI coinsText;
  8. private void OnEnable()
  9. {
  10. SceneManager.sceneLoaded += OnSceneLoaded;
  11. InitializeCoinDisplay();
  12. }
  13. private void OnDisable()
  14. {
  15. SceneManager.sceneLoaded -= OnSceneLoaded;
  16. }
  17. private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
  18. {
  19. InitializeCoinDisplay();
  20. }
  21. private void InitializeCoinDisplay()
  22. {
  23. if (GameDataManager.Instance != null)
  24. {
  25. // 重新绑定UI文本
  26. GameDataManager.Instance.SetGameSceneCoinsText(coinsText);
  27. // 强制刷新显示
  28. if (coinsText != null)
  29. {
  30. coinsText.text = $"{GameDataManager.Instance.coins}";
  31. }
  32. // 重新订阅事件
  33. GameDataManager.Instance.onCoinsChanged -= UpdateCoinDisplay;
  34. GameDataManager.Instance.onCoinsChanged += UpdateCoinDisplay;
  35. }
  36. }
  37. private void UpdateCoinDisplay()
  38. {
  39. if (coinsText != null && GameDataManager.Instance != null)
  40. {
  41. coinsText.text = $"{GameDataManager.Instance.coins}";
  42. }
  43. }
  44. /* private void Start()
  45. {
  46. InitializeCoinDisplay();
  47. }*/
  48. }