Files
gold_dolphin/unity/Assets/UI/MainMenuUIController.cs
T
2026-07-05 15:49:57 +08:00

110 lines
3.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace GameFramework
{
/// <summary>
/// 主菜单 UI 控制器(游戏封面)。
/// 包含游戏标题 + 开始游戏/剧情回放/制作人员按钮。
/// </summary>
public class MainMenuUIController : MonoBehaviour
{
[Header("标题")]
[SerializeField] Text titleText;
[SerializeField] Image titleImage;
[Header("Buttons")]
[SerializeField] Button startButton;
[SerializeField] Button storyReplayButton;
[SerializeField] Button creditsButton;
[SerializeField] Button quitButton;
[Header("Settings Panel (placeholder)")]
[SerializeField] GameObject settingsPanel;
[SerializeField] Button settingsBackButton;
[Header("Credits Panel")]
[SerializeField] GameObject creditsPanel;
[SerializeField] Button creditsCloseButton;
void Start()
{
Debug.Log("[MainMenu] creditsButton=" + (creditsButton != null ? creditsButton.name : "NULL") + " creditsPanel=" + (creditsPanel != null ? creditsPanel.name : "NULL"));
// 绑定按钮事件
if (startButton != null)
startButton.onClick.AddListener(OnStartClick);
if (storyReplayButton != null)
storyReplayButton.onClick.AddListener(OnStoryReplayClick);
if (creditsButton != null)
creditsButton.onClick.AddListener(OnCreditsClick);
if (quitButton != null)
quitButton.onClick.AddListener(OnQuitClick);
if (settingsBackButton != null)
settingsBackButton.onClick.AddListener(OnSettingsBackClick);
if (creditsCloseButton != null)
creditsCloseButton.onClick.AddListener(OnCreditsCloseClick);
// 确保面板初始关闭
if (settingsPanel != null)
settingsPanel.SetActive(false);
if (creditsPanel != null)
creditsPanel.SetActive(false);
}
void OnStartClick()
{
if (SceneLoader.Instance != null)
SceneLoader.Instance.LoadGameplayScene();
}
void OnStoryReplayClick()
{
// TODO: 实现剧情回放功能
Debug.Log("[MainMenu] 剧情回放 - 待实现");
}
void OnCreditsClick()
{
Debug.Log("[MainMenu] OnCreditsClick called! creditsPanel=" + (creditsPanel != null ? creditsPanel.name : "NULL"));
if (creditsPanel != null)
creditsPanel.SetActive(true);
}
void OnCreditsCloseClick()
{
if (creditsPanel != null)
creditsPanel.SetActive(false);
}
void OnSettingsBackClick()
{
if (settingsPanel != null)
settingsPanel.SetActive(false);
}
void OnQuitClick()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
void OnDestroy()
{
if (startButton != null) startButton.onClick.RemoveAllListeners();
if (storyReplayButton != null) storyReplayButton.onClick.RemoveAllListeners();
if (creditsButton != null) creditsButton.onClick.RemoveAllListeners();
if (quitButton != null) quitButton.onClick.RemoveAllListeners();
if (settingsBackButton != null) settingsBackButton.onClick.RemoveAllListeners();
if (creditsCloseButton != null) creditsCloseButton.onClick.RemoveAllListeners();
}
}
}