using System.Collections.Generic; using UnityEngine; using UVC.UI.List.Accordion; using UVC.UI.Window; /// /// 샘플 씬에서 에 데이터를 주입해 동작을 시연하는 컴포넌트. /// - 수평 섹션: Head 이미지 + Content 텍스트 + Tail 아이콘 버튼들. /// - 그리드 섹션: 이미지+캡션 셀. /// public class AccordionSample : MonoBehaviour { [SerializeField] private AccordionWindow accordionWindow; private void Start() { if (accordionWindow == null) { accordionWindow = FindFirstObjectByType(); } // AccordionList 이벤트 구독 if (accordionWindow != null && accordionWindow.AccordionList != null) { accordionWindow.AccordionList.OnHorizontalItemClick += OnHorizontalItemClick; accordionWindow.AccordionList.OnGridItemClick += OnGridItemClick; accordionWindow.AccordionList.OnGridItemDrop += OnGridItemDrop; } var data = new AccordionData(); // Horizontal section var sec1 = new AccordionSectionData { Title = "Settings", IsExpanded = true, LayoutType = AccordionItemLayoutType.Horizontal }; sec1.Items.Add(new AccordionHorizontalItemData { Head = AccordionContentSpec.FromImage("Prefabs/UI/images/icon_side_tab_library_128"), Content = AccordionContentSpec.FromText("Graphics", "open_graphics"), Tail = new List(){ AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", "refresh_graphics"), AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", "setting_graphics"), } }); sec1.Items.Add(new AccordionHorizontalItemData { Head = AccordionContentSpec.FromImage("Prefabs/UI/images/icon_side_tab_fleet_128"), Content = AccordionContentSpec.FromText("Audio", "open_audio"), Tail = new List(){ AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", "refresh_audio"), AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", "setting_audio"), } }); data.Sections.Add(sec1); // Grid section var sec2 = new AccordionSectionData { Title = "Presets", IsExpanded = true, LayoutType = AccordionItemLayoutType.Grid }; sec2.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" }); sec2.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" }); sec2.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" }); data.Sections.Add(sec2); var sec3 = new AccordionSectionData { Title = "Presets", IsExpanded = true, LayoutType = AccordionItemLayoutType.Grid }; sec3.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" }); sec3.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" }); sec3.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" }); data.Sections.Add(sec3); var sec4 = new AccordionSectionData { Title = "Presets", IsExpanded = true, LayoutType = AccordionItemLayoutType.Grid }; sec4.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" }); sec4.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" }); sec4.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" }); data.Sections.Add(sec4); var sec5 = new AccordionSectionData { Title = "Presets", IsExpanded = true, LayoutType = AccordionItemLayoutType.Grid }; sec5.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Simulator/Images/lib_forklift_400x300", Tag = "preset_low" }); sec5.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Simulator/Images/lib_pallet_400x300", Tag = "preset_medium" }); sec5.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Simulator/Images/lib_worker_400x300", Tag = "preset_high" }); data.Sections.Add(sec5); if (accordionWindow != null) { accordionWindow.SetData(data); } } private void OnHorizontalItemClick(AccordionHorizontalItemData itemData, AccordionContentSpec contentSpec) { Debug.Log($"Horizontal item clicked: {contentSpec.Text ?? contentSpec.ActionId}"); // ActionId에 따라 분기 처리 switch (contentSpec.ActionId) { case "open_graphics": Debug.Log("Open Graphics"); break; case "refresh_graphics": Debug.Log("Refresh Graphics"); break; case "setting_graphics": Debug.Log("Setting Graphics"); break; case "open_audio": Debug.Log("Open Audio"); break; case "refresh_audio": Debug.Log("Refresh Audio"); break; case "setting_audio": Debug.Log("Setting Audio"); break; } } private void OnGridItemClick(AccordionGridItemData itemData) { Debug.Log($"Click grid item: {itemData.Caption}"); } private void OnGridItemDrop(AccordionGridItemData itemData) { Debug.Log($"Dropped grid item: {itemData.Caption}"); } private void OnDestroy() { // 이벤트 구독 해제 if (accordionWindow != null && accordionWindow.AccordionList != null) { accordionWindow.AccordionList.OnHorizontalItemClick -= OnHorizontalItemClick; accordionWindow.AccordionList.OnGridItemClick -= OnGridItemClick; accordionWindow.AccordionList.OnGridItemDrop -= OnGridItemDrop; } } }