101 lines
2.9 KiB
C#
101 lines
2.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using AibisDream.Kit;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace AibisDream {
|
|
public class StartMenu : Singleton<StartMenu>
|
|
{
|
|
[SerializeField] private Button startButton;
|
|
[SerializeField] private Button selectLevelButton;
|
|
[SerializeField] private Button quitButton;
|
|
|
|
[SerializeField] private GameObject startTab;
|
|
[SerializeField] private GameObject levelTab;
|
|
|
|
[SerializeField] private TalkSceneSO[] talkSceneSoArray;
|
|
[SerializeField] private GameObject buttonPrefab;
|
|
|
|
private void OnEnable()
|
|
{
|
|
startButton.onClick.AddListener(StartGame);
|
|
selectLevelButton.onClick.AddListener(SelectLevel);
|
|
quitButton.onClick.AddListener(QuitGame);
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
startButton?.onClick.RemoveListener(StartGame);
|
|
selectLevelButton?.onClick.RemoveListener(SelectLevel);
|
|
quitButton?.onClick.RemoveListener(QuitGame);
|
|
}
|
|
|
|
public void StartGame()
|
|
{
|
|
GameLoopManager.Instance.StartNewGame();
|
|
}
|
|
|
|
public void SelectLevel()
|
|
{
|
|
SwitchToLevelTab();
|
|
// 生成关卡按钮
|
|
GeneLevelButtons();
|
|
}
|
|
|
|
private void GeneLevelButtons()
|
|
{
|
|
// 销毁原来的按钮
|
|
foreach (Transform child in levelTab.transform)
|
|
{
|
|
if (child.gameObject.name == "Suggestion")
|
|
{
|
|
continue;
|
|
}
|
|
Destroy(child.gameObject);
|
|
}
|
|
|
|
// 生成新按钮
|
|
for (int i = 0; i < talkSceneSoArray.Length; i++)
|
|
{
|
|
var tempButton = Instantiate(buttonPrefab, levelTab.transform);
|
|
tempButton.GetComponent<TextMeshProUGUI>().text = $"第{i + 1}关";
|
|
var idx = i;
|
|
tempButton.GetComponent<Button>().onClick.AddListener(() =>
|
|
{
|
|
GameLoopManager.Instance.StartNewGame(talkSceneSoArray[idx]);
|
|
});
|
|
}
|
|
|
|
// 生成返回按钮
|
|
var returnButton = Instantiate(buttonPrefab, levelTab.transform);
|
|
returnButton.GetComponent<TextMeshProUGUI>().text = "返回";
|
|
returnButton.GetComponent<Button>().onClick.AddListener(SwitchToStartTab);
|
|
}
|
|
|
|
private void SwitchToLevelTab()
|
|
{
|
|
startTab.SetActive(false);
|
|
levelTab.SetActive(true);
|
|
}
|
|
|
|
private void SwitchToStartTab()
|
|
{
|
|
startTab.SetActive(true);
|
|
levelTab.SetActive(false);
|
|
}
|
|
|
|
public void QuitGame()
|
|
{
|
|
Application.Quit();
|
|
}
|
|
|
|
public void HideStartMenu()
|
|
{
|
|
gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
|