using AibisDream.Kit; using UnityEngine; using UnityEngine.UI; namespace AibisDream.UI { /// /// 录制 HUD 侧边栏:Ctrl+R 唤出,四个开关独立控制光标、版本号、Top Bar、对话视觉。 /// 挂在 Info Panel 下,与 VariableBar 同类调试 UI,不使用独立 Canvas。 /// UI 层级在 Persistence 场景中配置,不在运行时生成。 /// public class RecordingToolPanel : MonoBehaviour { [SerializeField] private Toggle showCursorToggle; [SerializeField] private Toggle showVersionToggle; [SerializeField] private Toggle showTopBarToggle; [SerializeField] private Toggle showDialogToggle; private bool _showCursor = true; private bool _showVersion = true; private bool _showTopBar = true; private bool _showDialog = true; private VerText _verText; private void Awake() { _verText = FindObjectOfType(true); gameObject.SetActive(false); BindToggles(); ApplyAll(); } public void TogglePanel() { gameObject.SetActive(!gameObject.activeSelf); } private void BindToggles() { showCursorToggle.isOn = _showCursor; showVersionToggle.isOn = _showVersion; showTopBarToggle.isOn = _showTopBar; showDialogToggle.isOn = _showDialog; showCursorToggle.onValueChanged.AddListener(OnShowCursorChanged); showVersionToggle.onValueChanged.AddListener(OnShowVersionChanged); showTopBarToggle.onValueChanged.AddListener(OnShowTopBarChanged); showDialogToggle.onValueChanged.AddListener(OnShowDialogChanged); } private void OnShowCursorChanged(bool visible) { _showCursor = visible; CursorManager.Instance?.SetCursorVisible(visible); } private void OnShowVersionChanged(bool visible) { _showVersion = visible; _verText?.SetVisible(visible); } private void OnShowTopBarChanged(bool visible) { _showTopBar = visible; UIManager.Instance?.GetPanel()?.SetTopBarVisible(visible); } private void OnShowDialogChanged(bool visible) { _showDialog = visible; DialogUIManager.Instance?.SetDialogVisualVisible(visible); } private void ApplyAll() { OnShowCursorChanged(_showCursor); OnShowVersionChanged(_showVersion); OnShowTopBarChanged(_showTopBar); OnShowDialogChanged(_showDialog); } } }