Petition-to-the-Gods-V3/Assets/Scripts/Server/GlobalMenuManager.cs
2025-11-18 14:54:11 +08:00

114 lines
2.4 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;
public class GlobalMenuManager : MonoBehaviour
{
public static GlobalMenuManager Instance;
[Header("UI 元件")]
public GameObject menuButton;
public GameObject menuPanel;
public Button homeButton;
public Button quitButton;
public Button closeButton;
public Button skipButton;
void Awake()
{
if (Instance == null)
{
Instance = this;
// 重要:將整個 Canvas 設為 DontDestroyOnLoad
if (transform.parent != null)
{
DontDestroyOnLoad(transform.root.gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
}
}
else
{
Destroy(gameObject);
return;
}
}
void Start()
{
InitializeMenu();
}
void InitializeMenu()
{
// 確保選單面板一開始是隱藏的
if (menuPanel != null)
menuPanel.SetActive(false);
// 綁定按鈕事件
if (menuButton != null)
{
menuButton.GetComponent<Button>().onClick.AddListener(OpenMenu);
}
if (homeButton != null)
{
homeButton.onClick.AddListener(GoToHome);
}
if (quitButton != null)
{
quitButton.onClick.AddListener(QuitApplication);
}
if (closeButton != null)
{
closeButton.onClick.AddListener(CloseMenu);
}
if (skipButton != null)
{
skipButton.onClick.AddListener(skipButton_onClick);
}
}
private void skipButton_onClick()
{
CloseMenu();
if (ServerIntroSceneController.Instance != null)
{
StartCoroutine(ServerIntroSceneController.Instance.LoadNextScene());
}
}
public void OpenMenu()
{
if (menuPanel != null)
menuPanel.SetActive(true);
}
public void CloseMenu()
{
if (menuPanel != null)
menuPanel.SetActive(false);
}
void GoToHome()
{
SceneManager.LoadScene("ServerHomeScene");
CloseMenu();
}
void QuitApplication()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}