using UnityEngine; using UnityEngine.UI; using TMPro; public class HallSceneManager : MonoBehaviour { [Header("角色设置")] [SerializeField] private GameObject characterPrefab; [SerializeField] private Transform characterSpawnPoint; [SerializeField] private Animator characterAnimator; [Header("UI设置")] [SerializeField] private Canvas mainCanvas; [SerializeField] private Button startGameButton; [SerializeField] private Button settingsButton; [SerializeField] private TextMeshProUGUI playerNameText; [SerializeField] private TextMeshProUGUI coinsText; // 新增金币文本显示 private void Start() { InitializeUI(); SpawnCharacter(); // // 初始更新金币显示 // 确保 GameDataManager 实例存在并更新数据 if (GameDataManager.Instance != null) { GameDataManager.Instance.RefreshCoins();// 强制重新加载最新数据 GameDataManager.Instance.onCoinsChanged += UpdateCoinsDisplay; UpdateCoinsDisplay(); Debug.Log("[HallSceneManager] Initialized with current coins"); } else { Debug.LogError("GameDataManager instance not found!"); } } private void OnDestroy() { // 取消订阅事件 if (GameDataManager.Instance != null) { GameDataManager.Instance.onCoinsChanged -= UpdateCoinsDisplay; } } private void UpdateCoinsDisplay() { if (coinsText != null && GameDataManager.Instance != null) { coinsText.text = GameDataManager.Instance.coins.ToString(); //coinsText.text = $" {GameDataManager.Instance.coins}"; Debug.Log($"Updating coins display: {GameDataManager.Instance.coins}"); } else { Debug.LogWarning("Coins text or GameDataManager is null!"); } } private void InitializeUI() { // 初始化UI按钮事件 if (startGameButton != null) { startGameButton.onClick.AddListener(OnStartGameClick); } if (settingsButton != null) { settingsButton.onClick.AddListener(OnSettingsClick); } } private void SpawnCharacter() { if (characterPrefab != null && characterSpawnPoint != null) { GameObject character = Instantiate(characterPrefab, characterSpawnPoint.position, characterSpawnPoint.rotation); characterAnimator = character.GetComponent(); // 播放待机动画 if (characterAnimator != null) { characterAnimator.Play("Idle"); } } } private void OnStartGameClick() { // 开始游戏逻辑 Debug.Log("开始游戏"); } private void OnSettingsClick() { // 打开设置界面逻辑 Debug.Log("打开设置"); } }