101 lines
3.0 KiB
C#
101 lines
3.0 KiB
C#
|
|
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);
|
||
|
|
}
|
||
|
|
}
|