68 lines
2.3 KiB
C#
68 lines
2.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
public class KleinerSternMenu : MonoBehaviour
|
|
{
|
|
public string nameOfThisScene;
|
|
public GameObject buttonPrefab;
|
|
|
|
private class SceneWithMeta {
|
|
public string displayName;
|
|
public string internalName;
|
|
public SceneWithMeta(string internalName, string displayName){
|
|
this.displayName = displayName;
|
|
this.internalName = internalName;
|
|
}
|
|
}
|
|
private readonly List<SceneWithMeta> sceneList = new List<SceneWithMeta> {
|
|
new("kleiner_Stern_1", "Szene 1: Sternenhimmel"),
|
|
new("kleiner_Stern_2", "Szene 2: Wald"),
|
|
new("kleiner_Stern_3", "Szene 3: Freies Feld"),
|
|
new("kleiner_Stern_4", "Szene 4: Herberge"),
|
|
new("kleiner_Stern_5", "Szene 5: Stall"),
|
|
new("kleiner_Stern_6", "Szene 6: Stall")
|
|
};
|
|
private bool visible;
|
|
private List<GameObject> buttons;
|
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
void Start()
|
|
{
|
|
visible = false;
|
|
sceneList.Add(new("Hauptmenu", "Zum Hauptmenü"));
|
|
buttons = new();
|
|
float y = 20;
|
|
sceneList.Reverse();
|
|
foreach (SceneWithMeta s in sceneList) {
|
|
GameObject b = Instantiate(buttonPrefab, transform, false);
|
|
RectTransform tr = b.GetComponent<RectTransform>();
|
|
tr.anchorMin = Vector2.zero;
|
|
tr.anchorMax = Vector2.zero;
|
|
tr.anchoredPosition = new(20, y);
|
|
tr.pivot = Vector2.zero;
|
|
y += 50;
|
|
b.GetComponentInChildren<TextMeshProUGUI>().text = s.displayName;
|
|
b.GetComponent<Button>().onClick.AddListener(() => SceneManager.LoadScene(s.internalName));
|
|
if (s.internalName == nameOfThisScene) {
|
|
b.GetComponent<Image>().color = new(0, 0, 255);
|
|
}
|
|
b.SetActive(false);
|
|
buttons.Add(b);
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.Escape)){
|
|
visible = !visible;
|
|
foreach (GameObject button in buttons){
|
|
button.SetActive(visible);
|
|
}
|
|
}
|
|
}
|
|
}
|