Files
XRLib/Assets/Scenes/Sample/AccordionSample.cs

114 lines
5.2 KiB
C#
Raw Normal View History

using System.Collections.Generic;
2025-11-04 20:09:18 +09:00
using UnityEngine;
using UVC.UI.List.Accordion;
using UVC.UI.Window;
2025-11-04 20:09:18 +09:00
/// <summary>
/// 샘플 씬에서 <see cref="AccordionWindow"/>에 데이터를 주입해 동작을 시연하는 컴포넌트.
/// - 수평 섹션: Head 이미지 + Content 텍스트 + Tail 아이콘 버튼들.
/// - 그리드 섹션: 이미지+캡션 셀.
/// </summary>
2025-11-04 20:09:18 +09:00
public class AccordionSample : MonoBehaviour
{
[SerializeField]
private AccordionWindow accordionWindow;
private void Start()
2025-11-04 20:09:18 +09:00
{
if (accordionWindow == null)
{
accordionWindow = FindFirstObjectByType<AccordionWindow>();
2025-11-04 20:09:18 +09:00
}
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", (d) => Debug.Log("Open Graphics")),
Tail = new List<AccordionContentSpec>(){
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", (d) => Debug.Log("Refresh Graphics")),
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", (d) => Debug.Log("Setting Graphics")),
}
2025-11-04 20:09:18 +09:00
});
sec1.Items.Add(new AccordionHorizontalItemData
{
Head = AccordionContentSpec.FromImage("Prefabs/UI/images/icon_side_tab_fleet_128"),
2025-11-04 20:09:18 +09:00
Content = AccordionContentSpec.FromText("Audio"),
Tail = new List<AccordionContentSpec>(){
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_refresh_22x22", (d) => Debug.Log("Refresh Graphics")),
AccordionContentSpec.FromIconButton("Prefabs/UI/images/icon_setting_22x22", (d) => Debug.Log("Setting Graphics")),
}
2025-11-04 20:09:18 +09:00
});
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 = "Images/lib_forklift_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec2.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Images/lib_pallet_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec2.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Images/lib_worker_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
2025-11-04 20:09:18 +09:00
data.Sections.Add(sec2);
var sec3 = new AccordionSectionData
{
Title = "Presets",
IsExpanded = true,
LayoutType = AccordionItemLayoutType.Grid
};
sec3.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Images/lib_forklift_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec3.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Images/lib_pallet_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec3.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Images/lib_worker_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
data.Sections.Add(sec3);
var sec4 = new AccordionSectionData
{
Title = "Presets",
IsExpanded = true,
LayoutType = AccordionItemLayoutType.Grid
};
sec4.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Images/lib_forklift_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec4.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Images/lib_pallet_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec4.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Images/lib_worker_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
data.Sections.Add(sec4);
var sec5 = new AccordionSectionData
{
Title = "Presets",
IsExpanded = true,
LayoutType = AccordionItemLayoutType.Grid
};
sec5.Items.Add(new AccordionGridItemData { Caption = "Low", Image = "Images/lib_forklift_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec5.Items.Add(new AccordionGridItemData { Caption = "Medium", Image = "Images/lib_pallet_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
sec5.Items.Add(new AccordionGridItemData { Caption = "High", Image = "Images/lib_worker_400x300", OnClick = OnClickGridItem, OnDrop = OnDropGridItem });
data.Sections.Add(sec5);
2025-11-04 20:09:18 +09:00
if (accordionWindow != null)
{
accordionWindow.SetData(data);
}
}
private void OnClickGridItem(AccordionGridItemData itemData)
{
Debug.Log($"Click grid item: {itemData.Caption}");
}
private void OnDropGridItem(AccordionGridItemData itemData)
{
Debug.Log($"Dropped grid item: {itemData.Caption}");
}
2025-11-04 20:09:18 +09:00
}