using Microsoft.MixedReality.Toolkit.Input; using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class Whiteboard : MonoBehaviour, IMixedRealityTouchHandler { public List<GameObject> uiElements; // Liste f�r alle �bergeordneten UI-Elemente (TextMeshPro und Buttons) public GameObject awtrue; public GameObject awfalse; private Coroutine hideCoroutine; // Coroutine-Referenz zum Verwalten des Timers void Start() { SetElementsVisibility(false); // Initial unsichtbar awtrue.active = false; awfalse.active = false; } public void OnTouchStarted(HandTrackingInputEventData eventData) { // Sichtbar machen SetElementsVisibility(true); // Bestehende Coroutine stoppen, falls vorhanden if (hideCoroutine != null) { StopCoroutine(hideCoroutine); } // Neue Coroutine starten hideCoroutine = StartCoroutine(HideElementsAfterDelay(10f)); // 10 Sek Verz�gerung } public void OnTouchCompleted(HandTrackingInputEventData eventData) { } public void OnTouchUpdated(HandTrackingInputEventData eventData) { } IEnumerator HideElementsAfterDelay(float delay) { yield return new WaitForSeconds(delay); SetElementsVisibility(false); } void SetElementsVisibility(bool isVisible) { foreach (var element in uiElements) { SetVisibilityRecursive(element, isVisible); } } void SetVisibilityRecursive(GameObject obj, bool isVisible) { // TextMeshPro-Komponente TextMeshPro textMeshPro = obj.GetComponent<TextMeshPro>(); if (textMeshPro != null) { textMeshPro.color = new Color(textMeshPro.color.r, textMeshPro.color.g, textMeshPro.color.b, isVisible ? 1.0f : 0.0f); } // Renderer-Komponente (f�r andere visuelle Elemente) Renderer renderer = obj.GetComponent<Renderer>(); if (renderer != null) { renderer.enabled = isVisible; } // Weitere UI-Komponenten var graphic = obj.GetComponent<UnityEngine.UI.Graphic>(); if (graphic != null) { graphic.color = new Color(graphic.color.r, graphic.color.g, graphic.color.b, isVisible ? 1.0f : 0.0f); } // Rekursiv f�r alle Kinderobjekte foreach (Transform child in obj.transform) { SetVisibilityRecursive(child.gameObject, isVisible); } } }