Cubism SDK for Unity의 성능 튜닝 정보

업데이트: 2020/01/31

개요

기본적으로 퍼포먼스 튜닝은 Unity의 프로파일러를 이용해 처리의 무거운 부분을 확인하면서 실시해 주세요.

Cubism SDK에서는 모델 구조에 따라 프로그램상에서의 성능에 영향을 줄 수 있습니다.
또한 Live2D SDK for Unity는 구조의 명확성을 우선하기 때문에 일부 의도적으로 성능을 희생하는 부분이 있습니다.
다음은 SDK의 성능에 영향을 주는 점을 설명합니다.

모델 구조

자세한 내용은 여기를 참조하십시오. 

프로젝트 구조

Unity 이벤트 함수

앞서 언급했듯이 Live2D SDK for Unity는 구조의 명확함을 우선합니다.
그 때문에, 각 컴포넌트의 갱신 처리는 LateUpdate() 등의 Unity 이벤트 함수에서 실시하고 있습니다.
이 Unity의 이벤트 함수는 호출 비용이 적지 않습니다.
SDK를 그대로 사용하여 모델을 여러 개 표시하는 경우 실행 환경에 따라 매우 성능이 나빠질 수 있습니다.
성능을 중시한다면 각 컴포넌트의 업데이트 프로세스를 하나의 Controller에서 호출하는 것이 좋습니다.
Cubism SDK for Unity와 함께 제공되는 CubismUpdateController는 Cubism SDK의 컴포넌트 실행 순서를 제어하기 위해 동일한 처리를 수행하므로 위의 대응을 수행하는 경우 CubismUpdateController 구현이 참고가 됩니다.

CubismUpdateController에 대한 자세한 내용은 여기를 참조하십시오. 

마스크용 텍스쳐의 취급

Cubism 모델에서 사용되는 마스크용 텍스쳐는 포괄적인 것 하나를 공유하여 사용하고 있습니다.
Unity에서 Prefab이 생성된 시점에 CubismMaskController에 해당 참조가 설정됩니다.

그러나 모델의 Prefab을 그대로 AssetBundle로 설정하면 Prefab을 인스턴스화 할 때 CubismMaskController에 설정된 마스크 텍스쳐는 참조에서 복사가 설정된 상태로 변화합니다.
그 때문에, 이 사양을 무시하면 AssetBundle로부터 모델의 생성과 파기를 반복할 때마다 텍스쳐가 계속 남아 메모리를 압박하게 됩니다.

이 현상에 대한 자세한 내용과 대책은 여기를 참조하십시오. 

이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.