Projext/Assets/02_Scripts/UI/Menu/MainMenuManager.cs

101 lines
3.0 KiB
C#
Raw Normal View History

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);
}
}