Unity Gizmos 및 Handles 사용 가이드
Unity는 게임 개발 시 개발자에게 유용한 도구를 제공합니다. Gizmos와 Handles는 씬 뷰와 게임 뷰에서 다양한 시각적 요소를 추가하여 디버깅과 조작을 쉽게 할 수 있게 해주는 클래스입니다. 이 문서에서는 이 두 클래스를 간단히 설명하고, 활용 예제를 통해 이해를 돕겠습니다.
Gizmos 클래스
Gizmos 클래스를 사용하면 씬 뷰에서 디버깅, 설정 지원 또는 도구로 사용할 수 있는 라인, 구체, 큐브, 아이콘 등 다양한 요소를 그릴 수 있습니다.
코드 예제
다음은 게임 오브젝트 주변에 노란색 와이어 큐브를 그리는 예제입니다.
using UnityEngine;
public class GizmosExample : MonoBehaviour
{
void OnDrawGizmosSelected()
{
// 변환 위치에 노란색 큐브 그리기
Gizmos.color = Color.yellow;
Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));
}
}
이 코드를 사용하면 선택된 게임 오브젝트 주위에 큐브를 그릴 수 있습니다.
활용 예제
- NPC의 행동 범위 표시
- 오브젝트의 충돌 영역 디버깅
- 각종 인게임 요소의 시각적 피드백 제공
Handles 클래스
Handles 클래스는 Gizmos와 유사하지만, 더 많은 상호작용 기능을 제공합니다. 이 클래스는 씬을 보다 직관적으로 조작할 수 있도록 도와줍니다.
코드 예제
다음은 화살표 모양 핸들을 사용하여 원호 영역을 수정하는 방법을 보여주는 예제입니다.
using UnityEditor;
using UnityEngine;
using System.Collections;
// 프로젝트 내에 존재해야 하는 클래스
public class WireArcExample : MonoBehaviour
{
public float shieldArea;
}
// 180도와 스케일 핸들을 사용하여 디스크에 "shieldArea" 값을 수정할 수 있는 원호 생성
[CustomEditor(typeof(WireArcExample))]
public class DrawWireArc : Editor
{
void OnSceneGUI()
{
Handles.color = Color.red;
WireArcExample myObj = (WireArcExample)target;
Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea);
myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1);
}
}
위 코드는 플레이어의 방어막 영역을 시각적으로 수정할 수 있는 기능을 제공합니다.
활용 예제
- 게임 캐릭터의 공격 범위 조정
- 특정 이벤트 트리거 지역 시각화
- 씬 구성 요소의 크기 및 위치 조정
결론
Gizmos와 Handles 클래스는 Unity에서 보다 효과적인 개발을 위한 강력한 도구입니다. 이 클래스들을 활용하여 프로젝트를 효율적으로 디버깅하고 시각적으로 조작할 수 있는 다양한 기능을 구현할 수 있습니다. 더 자세한 정보는 해당 클래스의 스크립트 레퍼런스 페이지와 Handles 스크립트 레퍼런스 페이지를 참조하시기 바랍니다.