Unity 사용자 매뉴얼: TilemapEditorTool
이 문서는 Unity의 TilemapEditorTool 클래스에 대한 간단한 해설 및 활용 예제를 제공합니다. 이 클래스를 통해 타일 팔레트의 편집 도구를 정의하고 커스터마이즈할 수 있습니다.
TilemapEditorTool 클래스
개요
TilemapEditorTool은 Tile Palette 창에서 사용할 수 있는 에디터 도구를 정의하는 상속 가능한 클래스입니다. 이 클래스를 사용하여 커스텀 에디터 도구를 만들어 다양한 작업을 수행할 수 있습니다.
클래스 생성 방법
새로운 TilemapEditorTool 클래스를 생성하려면 다음 단계를 따르세요:
- 클래스 생성: TilemapEditorTool을 상속하는 클래스를 만듭니다.
- 필수 메서드 오버라이드: 새로운 클래스에서 모든 필수 메서드를 오버라이드합니다.
오버라이드 할 수 있는 메서드
TilemapEditorTool에서 오버라이드할 수 있는 주요 메서드는 다음과 같습니다:
메서드명 | 설명 |
---|---|
protected abstract string tooltipStringFormat { get; } |
툴팁을 표시하기 위한 포맷 문자열을 정의합니다. |
protected abstract string shortcutId { get; } |
툴의 단축키 ID를 정의하여 키보드 단축키를 식별합니다. |
public virtual GUIContent toolbarIcon { get; } |
도구 아이콘을 정의합니다. 기본 아이콘이 아닌 커스텀 아이콘을 설정할 수 있습니다. |
public virtual bool HandleTool(...) |
커스텀 도구 처리를 위한 동작을 정의합니다. |
public override bool IsAvailable() |
현재 도구를 활성화할 수 있는지 여부를 나타냅니다. |
핸들링 도구
HandleTool 메서드는 다음과 같은 매개변수를 전달받습니다:
- isHotControl: 툴이 Unity GUI에서 핫 컨트롤인지 여부를 나타냅니다.
- gridLayout: 도구가 처리하는 GridLayout.
- brushTarget: 도구가 작업할 게임 오브젝트.
- gridMousePosition: 현재 마우스 커서의 위치.
이 정보를 통해 커스텀 동작을 구현할 수 있습니다.
활성화 확인
IsAvailable 메서드는 TilemapEditorTool이 현재 활성화 가능한지를 확인합니다. 이 메서드를 통해 도구의 사용 가능성을 제어할 수 있습니다.
활용 예제
예제 1: 기본 도구 생성
다음은 TilemapEditorTool을 상속하여 기본 도구를 작성하는 예제입니다.
public class MyTilemapEditorTool : TilemapEditorTool {
protected override string tooltipStringFormat => "My Tool";
protected override string shortcutId => "MyToolShortcut";
public override GUIContent toolbarIcon => new GUIContent("My Tool Icon");
public override bool HandleTool(bool isHotControl, GridLayout gridLayout, GameObject brushTarget, Vector3Int gridMousePosition) {
// 커스텀 도구 동작 구현
return true;
}
public override bool IsAvailable() {
return true; // 활성화 가능
}
}
예제 2: 커스텀 아이콘 변경
아이콘을 교체하고 원하는 이름으로 툴팁을 설정하는 방법입니다.
public class CustomTileTool : TilemapEditorTool {
protected override string tooltipStringFormat => "Custom Tile Tool";
protected override string shortcutId => "CustomTileShortcut";
public override GUIContent toolbarIcon => new GUIContent(LoadIcon("CustomIcon"));
public override bool HandleTool(...) {
// 아이콘 핸들링
return true;
}
public override bool IsAvailable() {
return true;
}
private Texture2D LoadIcon(string iconName) {
// 아이콘 로드 로직
}
}
이 예제들은 TilemapEditorTool을 활용하여 Unity의 타일맵 기능을 확장하는 데 도움이 될 것입니다. 이러한 커스터마이징을 통해 효율적인 게임 개발이 가능합니다.