본문 바로가기
개발/Unity

[Unity][DOTS] Entity Debugger 사용 방법

by 가리봉맨 2019. 3. 27.
반응형

ECS를 사용하면 유니티 에디터의 Game View나 Hierarchy 창에서 Entity를 볼 수 없다. 기존에 유니티 에디터에서 GameObject를 만들고 눈으로 정보를 확인하면서 작업하던 사람에게는 너무나 당황스러운 상황이다. 100% 만족스럽지는 않지만 Entity Debugger 창에서 Entity를 볼 수 있다.

유니티 에디터의 Window 메뉴에서 Entity Debugger를 찾아서 열면 다음 그림과 같은 화면이 뜬다. 참고로 유니티에서 제공한 Boid 샘플 프로젝트를 사용했다.

왼쪽의 System 탭은 게임에서 실행 중인 모든 System 리스트를 보여준다. 리스트는 알파벳 순 정렬이 아닌 Player Loop 순 정렬이라고 한다. 각 System은 on/off 체크박스로 껐다 켰다 하면서 디버깅할 수 있다. System 탭 오른쪽의 main (ms) 필드에는 메인쓰레드에서 각 System의 프레임 당 수행시간이 표시된다.

특정 System을 선택하면 오른쪽에 해당 System에 대한 자세한 정보가 표시된다. 

각각의 항목은 System이 data를 얻거나 어떤 동작을 수행하기 위한 Query(Component Group라고도 함)를 의미한다. 위 그림에서는 RenderMeshSystemV2 System에 세 개의 Query가 물려있다. 하나의 Component Group 항목을 구성하는 Component들은 색깔로 속성을 쉽게 파악할 수 있다. 흰 색은 ReadWrite 속성, 파란색은 Read-Only, 빨간 색은 원하지 않는 Component를 제외할 수 있는 속성인 Subtractive다.

특정 Component Group를 선택하면 Chunk Info 창에 Chunk의 메모리 사용 현황이 표시된다. 

Chunk Info 창의 하단을 보면 빨간색 막대 그래프 모양의 히스토그램이 표시된다. 히스토그램은 Chunk를 얼마나 잘 사용하고 있는지 여부를 보여준다. 위 그림이 의미하는 바는 다음과 같다. 50,000개의 Entity가 392개의 Chunk에 보관돼 있는데 그 중 390개의 Chunk가 꽉 차 있다는 뜻이다. 128은 각 Chunk에 들어갈 수 있는 최대 Entity 개수를 의미한다. 상당히 이상적인 메모리 사용 현황이다. 이렇게 Chunk가 꽉 차 있으면 ECS의 성능 향상 효과를 제대로 볼 수 있다.

<참고 자료>
ECS Track: Using the Entity Debugger - Unite LA

 

반응형

댓글