SubMeshUI 에러 해결법 [유니티 C#]

1. SubMeshUI 생성 이유

TMP(TextMeshPro)를 사용하다 보면 가끔 ‘SubMeshUI‘ 오브젝트가 생성되는 경우가 있습니다.

SubMeshUItext에 들어있는 문자가 폰트에 없을 시 생성되고, 해당 문자를 기본 폰트로 출력해줍니다.

SubMeshUI는 현재 폰트 에셋에 글자가 없을 때, 연결된 Fallback(대체) 폰트를 끌어와서 렌더링하기 위해 생성되는 추가적인 객체입니다.

SubMeshUI는 TMP의방어 전략이라고 할 수 있습니다.

하지만, SubMeshUI가 생성되면, 드로우콜(DrawCall)이 늘어나 성능에 영향을 줄 수 있으니 가능하면 원본 폰트에 문자를 포함 시키는 것이 좋습니다.

2. 문자 검색

폰트 에셋의 Character Table에서 검색을 통해 입력한 문자가 존재하는 지 확인할 수 있습니다.

[폰트 에셋] -> [Character Table] -> 검색

3. 해결 방법

사용한 원본 폰트(otf, ttf)에 문제가 없다면, 많은 경우 폰트 에셋을 다시 만들어 해결할 수 있습니다.

  • Atlas Resolution: 2048 이상 권장
  • Character Set: ASCII 또는 Extend ASCII 또는 Custom Range로 한글 지정

TMP의 아틀라스는 폰트에 포함될 모든 문자를 텍스쳐 이미지로 모아둡니다.

특히 한글의 경우 글자 수가 많기에 많은 아틀라스를 필요로 합니다.

폰트에 존재하는 문자가 많을수록 더 많은 공간이 필요하기에, 아틀라스 해상도(Atlas Resolution)를 높이면 이전에 포함되지 않았던 문자도 포함 될 공간이 마련됩니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다