HallSceneManager.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using TMPro;
  4. public class HallSceneManager : MonoBehaviour
  5. {
  6. [Header("角色设置")]
  7. [SerializeField] private GameObject characterPrefab;
  8. [SerializeField] private Transform characterSpawnPoint;
  9. [SerializeField] private Animator characterAnimator;
  10. [Header("UI设置")]
  11. [SerializeField] private Canvas mainCanvas;
  12. [SerializeField] private Button startGameButton;
  13. [SerializeField] private Button settingsButton;
  14. [SerializeField] private TextMeshProUGUI playerNameText;
  15. [SerializeField] private TextMeshProUGUI coinsText; // 新增金币文本显示
  16. private void Start()
  17. {
  18. InitializeUI();
  19. SpawnCharacter();
  20. // // 初始更新金币显示
  21. // 确保 GameDataManager 实例存在并更新数据
  22. if (GameDataManager.Instance != null)
  23. {
  24. GameDataManager.Instance.RefreshCoins();// 强制重新加载最新数据
  25. GameDataManager.Instance.onCoinsChanged += UpdateCoinsDisplay;
  26. UpdateCoinsDisplay();
  27. Debug.Log("[HallSceneManager] Initialized with current coins");
  28. }
  29. else
  30. {
  31. Debug.LogError("GameDataManager instance not found!");
  32. }
  33. }
  34. private void OnDestroy()
  35. {
  36. // 取消订阅事件
  37. if (GameDataManager.Instance != null)
  38. {
  39. GameDataManager.Instance.onCoinsChanged -= UpdateCoinsDisplay;
  40. }
  41. }
  42. private void UpdateCoinsDisplay()
  43. {
  44. if (coinsText != null && GameDataManager.Instance != null)
  45. {
  46. coinsText.text = GameDataManager.Instance.coins.ToString();
  47. //coinsText.text = $" {GameDataManager.Instance.coins}";
  48. Debug.Log($"Updating coins display: {GameDataManager.Instance.coins}");
  49. }
  50. else
  51. {
  52. Debug.LogWarning("Coins text or GameDataManager is null!");
  53. }
  54. }
  55. private void InitializeUI()
  56. {
  57. // 初始化UI按钮事件
  58. if (startGameButton != null)
  59. {
  60. startGameButton.onClick.AddListener(OnStartGameClick);
  61. }
  62. if (settingsButton != null)
  63. {
  64. settingsButton.onClick.AddListener(OnSettingsClick);
  65. }
  66. }
  67. private void SpawnCharacter()
  68. {
  69. if (characterPrefab != null && characterSpawnPoint != null)
  70. {
  71. GameObject character = Instantiate(characterPrefab, characterSpawnPoint.position, characterSpawnPoint.rotation);
  72. characterAnimator = character.GetComponent<Animator>();
  73. // 播放待机动画
  74. if (characterAnimator != null)
  75. {
  76. characterAnimator.Play("Idle");
  77. }
  78. }
  79. }
  80. private void OnStartGameClick()
  81. {
  82. // 开始游戏逻辑
  83. Debug.Log("开始游戏");
  84. }
  85. private void OnSettingsClick()
  86. {
  87. // 打开设置界面逻辑
  88. Debug.Log("打开设置");
  89. }
  90. }