4.2 KiB
4.2 KiB
UTKToolBar
UIToolkit 기반 툴바 컴포넌트입니다. 가로/세로 배치 전환을 지원하며, 4가지 버튼 타입과 구분선을 제공합니다.
구조
ToolBar/
├── Data/ # 데이터 레이어
│ ├── IUTKToolBarItem.cs # 아이템 인터페이스
│ ├── UTKToolBarButtonData.cs # 버튼 데이터 추상 클래스
│ ├── UTKToolBarStandardButtonData.cs
│ ├── UTKToolBarToggleButtonData.cs
│ ├── UTKToolBarRadioButtonData.cs
│ ├── UTKToolBarRadioButtonGroup.cs
│ ├── UTKToolBarExpandableButtonData.cs
│ └── UTKToolBarSeparatorData.cs
├── Items/ # View 아이템
│ ├── UTKToolBarButtonBase.cs # 버튼 View 추상 클래스
│ ├── UTKToolBarStandardButton.cs
│ ├── UTKToolBarToggleButton.cs
│ ├── UTKToolBarRadioButton.cs
│ ├── UTKToolBarExpandableButton.cs
│ └── UTKToolBarSeparator.cs
├── UTKToolBar.cs # 메인 View
├── UTKToolBarModel.cs # 데이터 모델 (팩토리)
└── UTKToolBarEnums.cs # 열거형, 이벤트 인자
버튼 타입
| 타입 | 설명 |
|---|---|
| Standard | 단순 클릭 버튼 |
| Toggle | On/Off 상태 전환 |
| Radio | 그룹 내 상호 배타적 선택 |
| Expandable | 서브 메뉴 확장 (Lazy Loading) |
| Separator | 시각적 구분선 |
사용법
기본 (View 직접 사용)
// 1. 모델 생성
var model = new UTKToolBarModel();
model.AddStandardButton("저장", UTKMaterialIcons.Save);
model.AddSeparator();
model.AddToggleButton("그리드", false, UTKMaterialIcons.GridOn, UTKMaterialIcons.GridOff);
model.AddRadioButton("tool", "선택", true, UTKMaterialIcons.NearMe);
model.AddRadioButton("tool", "이동", false, UTKMaterialIcons.OpenWith);
// 2. View 생성 및 빌드
var toolbar = new UTKToolBar();
toolbar.Orientation = UTKToolBarOrientation.Horizontal;
parent.Add(toolbar);
toolbar.BuildToolBar(model);
// 3. 이벤트 구독
toolbar.OnAction += args => Debug.Log($"{args.Text}: {args.ActionType}");
// 4. 배치 방향 전환
toolbar.SetOrientation(UTKToolBarOrientation.Vertical);
Controller 사용 (MonoBehaviour)
var controller = gameObject.AddComponent<UTKToolBarController>();
var model = new UTKToolBarModel();
// ... 모델 설정 ...
controller.SetData(model);
controller.Initialize();
controller.OnAction += args => Debug.Log($"{args.Text}: {args.ActionType}");
확장 버튼 (서브 메뉴)
var shapes = model.AddExpandableButton("도형", UTKMaterialIcons.Category, updateIconOnSelection: true);
shapes.SubButtons.Add(new UTKToolBarStandardButtonData { Text = "사각형", IconPath = UTKMaterialIcons.CropSquare, UseMaterialIcon = true });
shapes.SubButtons.Add(new UTKToolBarStandardButtonData { Text = "원형", IconPath = UTKMaterialIcons.Circle, UseMaterialIcon = true });
API
UTKToolBarModel
| 메서드 | 설명 |
|---|---|
AddStandardButton() |
일반 버튼 추가 |
AddToggleButton() |
토글 버튼 추가 |
AddRadioButton() |
라디오 버튼 추가 (자동 그룹 등록) |
AddExpandableButton() |
확장 버튼 추가 |
AddSeparator() |
구분선 추가 |
SetRadioButtonSelectionByText() |
텍스트로 라디오 선택 |
SetToggleButtonStateByText() |
텍스트로 토글 상태 변경 |
GetToggleButtonState() |
토글 상태 조회 |
UTKToolBar (View)
| 멤버 | 설명 |
|---|---|
Orientation |
배치 방향 (Horizontal/Vertical) |
BuildToolBar(model) |
모델로 툴바 빌드 |
ClearToolBar() |
모든 아이템 제거 |
SetOrientation() |
배치 방향 변경 |
OnAction |
버튼 액션 이벤트 |
리소스 경로
Resources/UIToolkit/ToolBar/
├── UTKToolBar.uxml / UTKToolBarUss.uss
├── UTKToolBarButton.uxml / UTKToolBarButtonUss.uss
├── UTKToolBarToggleButton.uxml / UTKToolBarToggleButtonUss.uss
├── UTKToolBarExpandableButton.uxml / UTKToolBarExpandableButtonUss.uss
├── UTKToolBarSeparator.uxml / UTKToolBarSeparatorUss.uss
└── UTKToolBarSubMenu.uxml / UTKToolBarSubMenuUss.uss