Projext/Assets/02_Scripts/UI/Menu/MainMenuManager.cs
hydrozen e989d20668 카툰 쉐이더 추가 + 중복 스크립트 수정 + 전체 업데이트
- ToonPostProcess.shader: 횃불 고딕 스타일 후처리 쉐이더 (Built-in RP)
- ToonCameraEffect.cs: 카메라 자동 부착 후처리 스크립트
- 중복 UI 스크립트 제거 (MenuIntroController, ToggleCustom)
- 씬, 프리팹, 애니메이션 등 전체 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:31:16 +09:00

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