[Unity] Batching이 미적용 되는 경우
모바일 플랫폼으로 개발을 하다보면 최적화에 신경쓰게 되는 경우가 많다.
여러 최적화 방법중에 중요한 한가지 방법이 Draw Call을 줄이는 것인데
가장 기본적인 최적화라고 말하자면 Batching 이라고 할 수 있을 것 같다.
Batching 이란 간단하게 설명해서 비슷한 오브젝트 끼리 한번에 드로우 되는것이라고 보면 된다.
즉 같은 오브젝트 10개가 있으면 보통 10번의 Draw Call이 불려지는데
이를 한번에 묶어 랜더링 함으로써 1번의 Draw Call로 10개의 오브젝트를 불리는 것이다
배칭 기법과 배칭 설정 등은 링크로...
https://docs.unity3d.com/kr/2018.1/Manual/DrawCallBatching.html
본론으로 넘어가서 Batching 작업 중 같은 오브젝트, Material을 사용하고 있는데 Batch가 묶이지 않는 경우가 있다.
Batching이 되었을 경우 Dynamic Batch로 묶여서 랜더링이 되야하는데 묶이지 않는경우...
이렇게 Objects have different materials 인 상태라면 Batching이 안된 경우라고 볼수 있다.
내 경우에는 Renderer 컴포넌트의 Material에 직접 접근함으로써 발생하는 문제 였다.
Material에 접근해서 값을 바꿔주면 오브젝트가 사용하고 있던 Material의 instance를 만들어 넣어준다.
그렇기에 다른 Material을 사용하는 상황이 되는것이고 Batching 이 되지 않는 것!
Material을 직접 접근하지 말고 다른 방법을 사용해보자.
'Unity' 카테고리의 다른 글
[Unity-UniRx] Object Pooling 사용하기 (0) | 2019.10.22 |
---|---|
[Unity] Float 사용시 주의점 (1) | 2019.10.17 |
[Unity-Android] 저사양 기기에서 이미지가 출력되지 않는 경우 (0) | 2019.10.11 |
[Unity-Mobile] TextMeshPro가 몇몇 안드로이드 기기에서 출력되지 않는 경우 (0) | 2019.09.24 |