using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class MainMenuManager : MonoBehaviour { [Header("패널 참조")] public GameObject mainMenuPanel; public GameObject settingsPanel; [Header("버튼 참조")] public Button startButton; public Button settingsButton; public Button quitButton; public Button settingsBackButton; [Header("설정 슬라이더")] public Slider bgmSlider; public Slider sfxSlider; [Header("인트로 컨트롤러")] public MenuIntroController introController; [Header("게임씬 이름")] public string gameSceneName = "GameScene"; public LoadingController 로딩컨트롤러; private void Start() { startButton.onClick.AddListener(OnStartButtonClick); settingsButton.onClick.AddListener(OnSettingsButtonClick); quitButton.onClick.AddListener(OnQuitButtonClick); settingsBackButton.onClick.AddListener(OnSettingsBackButtonClick); if (bgmSlider != null) bgmSlider.value = PlayerPrefs.GetFloat("BGMVolume", 1f); if (sfxSlider != null) sfxSlider.value = PlayerPrefs.GetFloat("SFXVolume", 1f); ShowMainMenu(); } // ── 게임 시작 ────────────────────────────── public void OnStartButtonClick() { ButtonAnimator.Play(startButton, () => StartCoroutine(로딩컨트롤러.로딩시작())); } // ── 설정 열기 ────────────────────────────── public void OnSettingsButtonClick() { ButtonAnimator.Play(settingsButton, () => StartCoroutine(OpenSettings())); } private IEnumerator OpenSettings() { yield return StartCoroutine(introController.PlayOutro()); mainMenuPanel.SetActive(false); settingsPanel.SetActive(true); } // ── 설정 닫기 ────────────────────────────── public void OnSettingsBackButtonClick() { PlayerPrefs.Save(); StartCoroutine(CloseSettings()); } private IEnumerator CloseSettings() { settingsPanel.SetActive(false); mainMenuPanel.SetActive(true); yield return null; introController.ReplayIntro(); } // ── 게임 종료 ────────────────────────────── public void OnQuitButtonClick() { ButtonAnimator.Play(quitButton, () => { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif }); } // ── 유틸 ────────────────────────────────── private void ShowMainMenu() { mainMenuPanel.SetActive(true); settingsPanel.SetActive(false); } }