// HangarTutorialUI.cs // Zweck: Einfache Paging-UI im Hangar; per Input weiterklicken; blendet sich weich aus. using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.InputSystem; public class HangarTutorialUI : MonoBehaviour { [Header("UI")] [SerializeField] private CanvasGroup canvasGroup; // Sichtbarkeit/Interaktion [SerializeField] private TMP_Text bodyText; // Textfeld [Header("Controls")] [SerializeField] private InputActionReference advanceAction; // Eingabe zum Weiterklicken [Header("Behaviour")] [SerializeField] private bool startOnAwake = true; // direkt beim Laden starten [SerializeField] private float fadeSpeed = 6f; // Fade-Out Geschwindigkeit [TextArea(2, 4)] [SerializeField] private List pages = new() { "Willkommen zu deiner Mission, Rekrut! Ich bin Solan, deine persönliche KI und unterstütze dich mit allem was du brauchst.", "Wie du sicherlich schon mitbekommen hast, verschwinden die Englischen Worte auf dieser Welt...", "Doch wir sind hier um sie zurückzuholen, damit die Englische Sprache nicht ausstirbt!", "Lass uns keine Zeit verschwenden! Laufe mit dem linken Stick zu deinem Schiff.", "Sobald du dort bist, drückst du den rechten Trigger, dann beame ich dich rein." }; private int pageIndex = -1; private bool visible; private void Awake() { // Startzustand: versteckt if (canvasGroup) { canvasGroup.alpha = 0f; canvasGroup.interactable = false; canvasGroup.blocksRaycasts = false; } } private void Start() { if (startOnAwake) BeginTutorial(); } private void OnEnable() { if (advanceAction != null) { advanceAction.action.performed += OnAdvance; advanceAction.action.Enable(); } } private void OnDisable() { if (advanceAction != null) { advanceAction.action.performed -= OnAdvance; advanceAction.action.Disable(); } } private void Update() { if (!canvasGroup) return; // Einblenden sofort, Ausblenden per Fade float target = visible ? 1f : 0f; canvasGroup.alpha = Mathf.MoveTowards(canvasGroup.alpha, target, fadeSpeed * Time.deltaTime); bool interactable = canvasGroup.alpha > 0.95f; canvasGroup.interactable = interactable; canvasGroup.blocksRaycasts = interactable; } /// Startet das Hangar-Tutorial (erste Seite direkt sichtbar). public void BeginTutorial() { visible = true; if (canvasGroup) { canvasGroup.alpha = 1f; canvasGroup.interactable = true; canvasGroup.blocksRaycasts = true; } pageIndex = -1; ShowNextPage(); } /// Schließt die UI (blendet aus). public void CloseTutorial() { visible = false; // Update() fade-t aus if (canvasGroup) { canvasGroup.interactable = false; canvasGroup.blocksRaycasts = false; } pageIndex = -1; } private void OnAdvance(InputAction.CallbackContext _) { if (!visible) return; ShowNextPage(); } private void ShowNextPage() { pageIndex++; if (pageIndex >= pages.Count) { // Ende: einfach verschwinden CloseTutorial(); return; } if (bodyText) bodyText.text = pages[pageIndex]; } }