HallSceneManager.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. UpdateCoinsDisplay(); // 初始更新金币显示
  21. // 订阅金币变化事件
  22. if (GameDataManager.Instance != null)
  23. {
  24. GameDataManager.Instance.onCoinsChanged += UpdateCoinsDisplay;
  25. }
  26. }
  27. private void OnDestroy()
  28. {
  29. // 取消订阅事件
  30. if (GameDataManager.Instance != null)
  31. {
  32. GameDataManager.Instance.onCoinsChanged -= UpdateCoinsDisplay;
  33. }
  34. }
  35. private void UpdateCoinsDisplay()
  36. {
  37. if (coinsText != null && GameDataManager.Instance != null)
  38. {
  39. coinsText.text = $" {GameDataManager.Instance.coins}";
  40. }
  41. }
  42. private void InitializeUI()
  43. {
  44. // 初始化UI按钮事件
  45. if (startGameButton != null)
  46. {
  47. startGameButton.onClick.AddListener(OnStartGameClick);
  48. }
  49. if (settingsButton != null)
  50. {
  51. settingsButton.onClick.AddListener(OnSettingsClick);
  52. }
  53. }
  54. private void SpawnCharacter()
  55. {
  56. if (characterPrefab != null && characterSpawnPoint != null)
  57. {
  58. GameObject character = Instantiate(characterPrefab, characterSpawnPoint.position, characterSpawnPoint.rotation);
  59. characterAnimator = character.GetComponent<Animator>();
  60. // 播放待机动画
  61. if (characterAnimator != null)
  62. {
  63. characterAnimator.Play("Idle");
  64. }
  65. }
  66. }
  67. private void OnStartGameClick()
  68. {
  69. // 开始游戏逻辑
  70. Debug.Log("开始游戏");
  71. }
  72. private void OnSettingsClick()
  73. {
  74. // 打开设置界面逻辑
  75. Debug.Log("打开设置");
  76. }
  77. }