#nullable enable using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using UVC.UIToolkit; using UVC.UI.Commands; using UVC.Log; using UVC.Studio.UIToolkit.Modal; using Factory.UIToolkit.Modal; namespace UVC.Sample.UIToolkit { /// /// UTKSettingModalSample 독립 실행 샘플 코드입니다. /// public class UTKSettingModalSample : MonoBehaviour { [SerializeField] private UIDocument? _uiDocument; [SerializeField] [Tooltip("시작 시 적용할 테마")] private UTKTheme initialTheme = UTKTheme.Dark; private UTKToggle? _themeToggle; private VisualElement? _root; private UTKButton? _openButton0; private UTKButton? _openButton1; private UTKButton? _openButton2; private UTKButton? _openButton10; private UTKButton? _openButton11; private UTKButton? _openButton12; private UTKButton? _openButton13; private void Start() { // UIDocument 참조 확인 var doc = GetComponent(); if (doc == null) { Debug.LogError("UIDocument가 할당되지 않았습니다."); return; } _uiDocument = doc; _root = _uiDocument.rootVisualElement; UTKModal.SetRoot(_root); UTKThemeManager.Instance.RegisterRoot(_root); UTKThemeManager.Instance.SetTheme(initialTheme); // 테마 토글 _themeToggle = _root.Q("toggle"); if (_themeToggle != null) { _themeToggle.OnValueChanged += (isOn) => { UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light); }; } _openButton0 = _root.Q("openButton0"); if (_openButton0 != null) { _openButton0.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKSettingModalContent(0); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton1 = _root.Q("openButton1"); if (_openButton1 != null) { _openButton1.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKSettingModalContent(1); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton2 = _root.Q("openButton2"); if (_openButton2 != null) { _openButton2.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKSettingModalContent(2); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton10 = _root.Q("openButton10"); if (_openButton10 != null) { _openButton10.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKFactorySettingModalContent(0); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton11 = _root.Q("openButton11"); if (_openButton11 != null) { _openButton11.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKFactorySettingModalContent(1); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton12 = _root.Q("openButton12"); if (_openButton12 != null) { _openButton12.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKFactorySettingModalContent(2); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } _openButton13 = _root.Q("openButton13"); if (_openButton13 != null) { _openButton13.OnClicked += async () => { var modal = UTKModal.Create("Settings", UTKModal.ModalSize.Large); var content = new UTKFactorySettingModalContent(3); // 초기 탭 인덱스 설정 modal.Add(content); await modal.ShowAsync(); }; } } private void OnDestroy() { ULog.Debug("UTKSettingModalSample 정리 완료"); } } }