유니티 StaticBatchingUtility

StaticBatching에 대해

Static Batching이 무엇인지 알아야 StaticBatchingUtility 클래스를 사용할 수 있어 간단하게 설명해 보겠습니다.

 

Static Batching은 게임 오브젝트를 정적(Static)으로 일괄 처리하여 렌더링 성능을 향상하는 기능을 제공합니다.

Batching Static을 활성화 해주면 된다

즉, 여러 개의 정적(움직이지 않는) 오브젝트를 단일 메시로 결합하여 한 번의 Draw Call로 렌더링 할 수 있도록 하는 프로세스입니다.

 

Draw Call을 줄이면 왜? 좋은지에 대해 짤막하게 언급해 둔 포스팅이 있어서 링크 달아두겠습니다.

2023.08.04 - [Unity/Assets] - 유니티 MeshBaker

 

유니티 MeshBaker

MeshBaker란? 여러 개의 메시를 하나의 큰 메시로 결합하고 해당 오브젝트의 텍스처를 텍스처 아틀라스 및 텍스처 배열로 만드는 데 있어 도움을 주는 툴(Tool)입니다. 텍스쳐 아틀라스를 사용하지

wlsdn629.tistory.com


StaticBatchingUtility.Combine에 대해

StaticBatchingUtility 클래스의 주요 함수에는 StaticBatchingUtility.Combine가 있습니다.

 


이 함수는 정적으로 일괄 처리할 수 있는 게임 오브젝트 그룹이 있을 때 유용하며, 게임 오브젝트 배열의 모든 정적(움직이지 않는) 렌더러를 정적 배치로 결합합니다.

GameObject[] gameObjectsToBatch = { obj1, obj2, obj3 }; 
//만약 gameObjectsToBatch에 isStatic이 true가 아니라면 true로 설정해줘야함
StaticBatchingUtility.Combine(gameObjectsToBatch, parentObject);

StaticBatchingUtility.Combine을 사용하는 이유

위에서 언급했던 내용입니다. 왜 굳이 스크립트를 이용해서 Combine 해주어야 하는 걸까요?

 

인스펙터에서 토글 체크 해주기만 하면 간편한데 말이죠!

 

그 이유는 바로, 런타임에 생성되는 오브젝트들을 위함이기 때문입니다!

 

런타임에 생성되는 오브젝트들은 위와 같이 미리 세팅해 둘 수 없기 때문이죠!

 

한 마디로 요약해 보자면 런타임에 생성되는 오브젝트들을 Static Batching 해주기 위함이다!라고 생각하면 될 것 같습니다!