문제점
Skinned Mesh
가 적용되는 게임 오브젝트의 경우,
하이라키에서 트랜스폼 구조를 확인해보면
이렇게 Bone
별로 각각 존재하여, 굉장히 많은 게임오브젝트들로 이루어져 있다.
그런데 유니티 엔진에서는 부모 게임 오브젝트의 트랜스폼에 변경사항이 생기면
모든 자식 트랜스폼에 변경이 발생한다.
한마디로, 위와 같이 무수히 많은 자식 오브젝트가 존재하면 성능에 좋지 않다는 의미이다.
해결책
Project
윈도우에서 해당 모델 파일을 선택한다.
인스펙터 창에서 Rig
탭을 클릭한다.
여기서 만약 Optimize Game Objects
옵션이 나타나지 않는다면
Animation Type
을 Generic
또는 Humanoid
로 바꾸고,
Avatar Definition
을 Create From This Model
로 선택한다.
마지막으로 Optimize Game Objects
에 체크하고 Apply
버튼을 클릭한다.
이제 트랜스폼 구조가 아주 단순화된 것을 확인할 수 있다.
특정 본 나타내기
그런데 특정한 본을 기준으로 무기를 장착해야 한다거나 하는 이유로
본의 트랜스폼을 드러내야 하는 경우가 있을 수 있다.
이런 경우에는 Optimize Game Objects
하단의 Extra Transforms to Expose
를 펼치고,
원하는 본을 찾아서 체크한 뒤 Apply
를 누른다.
그러면 해당 트랜스폼이 드러난 것을 확인할 수 있다.
특정 오브젝트만 최적화하기
모델 파일에 대한 최적화 설정은 해당 메시를 사용하는 모든 오브젝트에 적용된다.
이를 개별적으로 적용하려면,
루트 게임 오브젝트에서 Animator
컴포넌트에 우클릭하고
Optimize Transform Hierarchy
를 클릭하여,
해당 오브젝트만 최적화하도록 설정할 수도 있다.