[Unity] 시각적 디버깅에 용이한 기즈모(Gizmos)

2022. 3. 11. 15:45Game Development/Unity

 

유니티에서 디버깅을 하다 보면, 콘솔과 같은 데이터 문자열보다는 시각적인 선을 통해 확인하고 싶은 경우가 있다.

예를 들면, 적과 다른 캐릭터들에게 플레이어나 다른 오브젝트가 범위 내로 들어올 때 볼 수 있게 해주는 가시선 기능 같은 것이 대표적이다.

 

지구처럼 공전을 하는 오브젝트가 있을 때, 그 궤도를 볼 수 있는 선으로 표시를 해준다면 더욱 편리할 것이다.

이런 기능들이 지원된다면, 어떻게 게임이 작동하는지 눈으로 직접 확인을 할 수 있는 장점이 있다.

(물론 이런 선들은 실제 인게임에서는 보이지 않는다.)

 

 

기즈모(Gizmos)

 

위에서 설명했던 기능들을 지원하기 위해, 유니티는 기즈모(Gizmos)라는 시각적 도구 장치를 제공한다.

충돌체의 와이어프레임 바운딩 박스(Wire Frame Bounding Box)나 카메라의 프러스텀(Frumstum)과 같은 것 외에도

충돌체, 트리거 볼륨, 탐색 메시(NavMesh) 에이전트, 카메라, 라이트와 같이, 수많은 유니티 오브젝트들이 각자의 시각적 도구 및 기즈모들을 가지고 있다.

 

끄거나 크기를 0으로 만들지 않는 이상 씬 화면에서 기본적으로 보이게 설정되어 있다.

 

 

기즈모(Gizmos)를 이용하여 가시선 그려보기

 

MonoBehaviour 클래스의 OnDrawGizmos() 이벤트 함수 내에 코드를 작성하면 가시선들이 그려지게 된다. 

선택한 오브젝트의 기즈모만 보이게 하려면 OnDrawGizmosSelected()를 사용한다.

void OnDrawGizmos()
{
    Gizmos.color = Color.red;
    Gizmos.DrawRay(transform.position, transform.forward.normalized * 5f);

    Gizmos.color = Color.blue;
    Gizmos.DrawWireSphere(transform.position, 4f);
}

 

씬 화면에 이렇게 그려지게 된다.

 

 

  • 이 글은 <유니티 C# 스크립팅 마스터하기> 책을 바탕으로 공부한 글입니다.
728x90
반응형