using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class UIManager : MonoBehaviour { [Header("管理器引用")] [SerializeField] private StepManager _stepManager; [SerializeField] private InteractionSystem _interactionSystem; [Header("=== 顶部提示栏 ===")] [SerializeField] private GameObject _tipPanel; [SerializeField] private Text _tipText; [Header("=== 详细操作说明面板 ===")] [SerializeField] private GameObject _detailPanel; [SerializeField] private Text _detailText; [Header("=== 对话气泡 ===")] [SerializeField] private GameObject _dialogueBubble; [SerializeField] private Text _dialogueText; [Header("=== 画中画视频 ===")] [SerializeField] private GameObject _videoPanel; [Header("=== 仿真导航栏按钮 ===")] [SerializeField] private Button _btnFullScreen; [SerializeField] private Button _btnPrevious; [SerializeField] private Button _btnNext; [SerializeField] private Button _btnSwitchMode; [SerializeField] private Button _btnReturn; [SerializeField] private Text _btnSwitchModeLabel; [Header("=== 底部进度条 ===")] [SerializeField] private Slider _progressBar; [SerializeField] private Text _progressText; [Header("=== 弹窗 ===")] [SerializeField] private ExamPopup _examPopup; [SerializeField] private GameObject _endPanel; private void Start() { Debug.Log("=== UIManager 初始化开始 ==="); AutoFindPanels(); HideVideo(); if (_endPanel != null) _endPanel.SetActive(false); if (_stepManager == null) _stepManager = FindObjectOfType(); if (_interactionSystem == null) _interactionSystem = FindObjectOfType(); BindEvents(); BindButtons(); BindNavbarButtons(); Debug.Log("=== UIManager 初始化完成 ==="); } private void AutoFindPanels() { var canvas = GameObject.Find("Canvas")?.transform; if (canvas == null) return; if (_videoPanel == null) { var t = canvas.Find("VideoPanel"); if (t != null) _videoPanel = t.gameObject; } if (_endPanel == null) { var t = canvas.Find("EndPanel"); if (t != null) _endPanel = t.gameObject; } if (_tipPanel == null) { var t = canvas.Find("TipPanel"); if (t != null) _tipPanel = t.gameObject; } if (_tipPanel != null && _tipText == null) { _tipText = _tipPanel.GetComponentInChildren(true); } } private void BindNavbarButtons() { var experimentPanel = GameObject.Find("ExperimentPanel"); if (experimentPanel == null) return; var navbar = experimentPanel.transform.Find("Navbar"); if (navbar == null) return; var btnFS = navbar.Find("FullScreen"); if (btnFS != null) { var btn = btnFS.GetComponent