110 lines
3.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|