using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; // GameManagerの状態と撃破数をCanvasへ表示する public class GameUI : MonoBehaviour { [SerializeField] private GameManager gameManager; [SerializeField] private TMP_Text defeatCountText; [SerializeField] private GameObject resultPanel; [SerializeField] private TMP_Text resultText; [SerializeField] private Button retryButton; private void OnEnable() { gameManager.DefeatCountChanged += OnDefeatCountChanged; gameManager.StateChanged += OnStateChanged; } private void OnDisable() { gameManager.DefeatCountChanged -= OnDefeatCountChanged; gameManager.StateChanged -= OnStateChanged; } private void Start() { Refresh(); } private void Refresh() { OnDefeatCountChanged( gameManager.DefeatCount, gameManager.ClearDefeatCount); resultPanel.SetActive(false); OnStateChanged(gameManager.State); } private void OnDefeatCountChanged(int count, int goal) { defeatCountText.text = $"Defeat {count} / {goal}"; } private void OnStateChanged(GameState state) { if (state != GameState.GameClear && state != GameState.GameOver) return; resultPanel.SetActive(true); resultText.text = state == GameState.GameClear ? "GAME CLEAR" : "GAME OVER"; EventSystem.current.SetSelectedGameObject(retryButton.gameObject); } }