Unity 인터페이스 사용자 매뉴얼
이 문서는 Unity에서 커스텀 패널 및 툴바 오버레이를 생성하는 방법에 대한 안내입니다. 매뉴얼의 주요 개념과 예제를 쉽게 설명합니다.
주요 개념
오버레이 생성
- 패널 오버레이: 사용자가 커스터마이징 할 수 있는 패널.
- 툴바 오버레이: 툴바 아이템을 유지하는 컨테이너로, 여러 요소를 포함할 수 있습니다.
툴바 요소 이해
- EditorToolbarElement: 툴바 요소를 등록하는 클래스입니다.
- VisualElement: 모든 UI 추가 요소의 기본 클래스입니다.
패널 오버레이 생성하기
패널 오버레이를 생성하는 단계는 다음과 같습니다:
- C# 스크립트 생성: Unity Editor의 스크립트 폴더에 새로운 C# 스크립트를 생성합니다.
- 기본 콘텐츠 제거: 생성한 스크립트의 기본 내용을 제거합니다.
- Overlay 클래스 구현:
UnityEditor.Overlays
네임스페이스의 Overlay 클래스를 상속받습니다. - CreatePanelContent 메서드 오버라이드: VisualElement를 반환하는 메서드를 구현합니다.
- OverlayAttribute 추가: 오버레이를 표시할 윈도우 타입을 지정합니다.
- 아이콘 추가: 필요시 아이콘을 추가합니다.
예제 코드
using UnityEditor;
using UnityEditor.Overlays;
using UnityEngine.UIElements;
[Overlay(typeof(SceneView), "Panel Overlay Example", true)]
public class MyToolButtonOverlay : Overlay
{
public override VisualElement CreatePanelContent()
{
var root = new VisualElement() { name = "My Toolbar Root" };
root.Add(new Label() { text = "Hello" });
return root;
}
}
툴바 오버레이 생성하기
툴바 오버레이를 생성하기 위한 단계는 다음과 같습니다:
- ToolbarOverlay를 상속: 툴바 오버레이 클래스를 생성하여
ToolbarOverlay
를 상속받습니다. - 요소 등록하기:
EditorToolbarElement
를 사용하여 툴바 요소들을 등록합니다. - ID 확인: 모든 오버레이에 Unique ID가 필요합니다.
- 스타일링: 툴바 요소는 별도의 스타일링이 필요합니다.
예제 코드
[Overlay(typeof(SceneView), "ElementToolbars Example")]
public class EditorToolbarExample : ToolbarOverlay
{
EditorToolbarExample() : base(CreateCube.id, ToggleExample.id, DropdownExample.id, DropdownToggleExample.id) { }
}
툴바 요소 구현하기
각 툴바 요소는 스탠드얼론 클래스를 형성하며, 다음과 같은 유형이 있습니다:
요소 유형 | 설명 |
---|---|
EditorToolbarButton | 클릭할 때 행동을 정의하는 버튼 |
EditorToolbarToggle | 켜기/끄기 상태를 관리하는 토글 |
EditorToolbarDropdown | 드롭다운 리스트를 표시하는 요소 |
EditorToolbarDropdownToggle | 드롭다운과 토글 기능을 결합한 요소 |
EditorToolbarButton 예제
[EditorToolbarElement("ExampleToolbar/Button", typeof(SceneView))]
class CreateCube : EditorToolbarButton
{
public CreateCube()
{
text = "Create Cube";
clicked += OnClick;
}
void OnClick()
{
var newObj = GameObject.CreatePrimitive(PrimitiveType.Cube).transform;
Undo.RegisterCreatedObjectUndo(newObj.gameObject, "Create Cube");
}
}
EditorToolbarToggle 예제
[EditorToolbarElement("ExampleToolbar/Toggle", typeof(SceneView))]
class ToggleExample : EditorToolbarToggle
{
public ToggleExample()
{
text = "Toggle OFF";
this.RegisterValueChangedCallback(OnStateChange);
}
void OnStateChange(ChangeEvent<bool> evt)
{
text = evt.newValue ? "Toggle ON" : "Toggle OFF";
}
}
EditorToolbarDropdown 예제
[EditorToolbarElement("ExampleToolbar/Dropdown", typeof(SceneView))]
class DropdownExample : EditorToolbarDropdown
{
public DropdownExample()
{
text = "Axis";
clicked += ShowDropdown;
}
void ShowDropdown()
{
var menu = new GenericMenu();
menu.AddItem(new GUIContent("X"), false, () => { text = "X"; });
menu.ShowAsContext();
}
}
이 문서를 통해 Unity에서 오버레이를 설정하고 관리하는 기본적인 방법과 실습 예제를 제공하였습니다. 각 요소에 대한 이해를 바탕으로 자신만의 툴바와 패널을 만들어보세요!