지원

자주 묻는 질문

빌드 크기, 폰트, 글리프 아틀라스, 런타임 성능에 대한 명확한 답변 — 실제 개발자들의 질문에서 추린 내용입니다.

빌드 크기 및 배포

UniText가 빌드 크기를 부풀립니까? 실제로 빌드에 무엇이 포함됩니까?

빌드 크기는 플랫폼, 아키텍처, 스트리핑, 압축에 따라 달라집니다. 글리프 아틀라스는 런타임에 생성됩니다. 폰트 에셋이 자체 데이터를 보유하며 원본 .ttf와 .otf는 에디터 전용 참조입니다. 네이티브 플레이어는 디스크 캐시를 읽고 WebGL은 데이터를 포함합니다.

.ttf 파일을 보관하고 함께 배포해야 합니까?

폰트 에셋이 자체 데이터를 보유하며 원본 .ttf와 .otf는 에디터 전용 참조입니다. 네이티브 플레이어는 디스크 캐시를 읽고 WebGL은 데이터를 포함합니다.

.ttf를 프로젝트에 임포트해야 하기는 합니까?

아니요. UniText 도구 창을 통해 디스크의 어느 위치에 있는 .ttf에서든 UniTextFont를 빌드할 수 있습니다(파일 대화상자가 바이트를 직접 읽습니다). 폰트를 프로젝트에 임포트하는 것은 선택 사항입니다.

UniText는 빈 빌드에 실제로 얼마나 추가합니까?

빌드 크기는 플랫폼, 아키텍처, 스트리핑, 압축에 따라 달라집니다. 글리프 아틀라스는 런타임에 생성됩니다.

CJK나 대용량 폰트에서 UniText는 TextMesh Pro와 비교해 어떻습니까?

시스템 폰트 자동 선택. 데스크톱과 모바일에서 자체 폰트는 선택 사항이며 WebGL은 지정한 폰트 사용. 새 글리프는 래스터화와 업로드가 필요합니다. 캐시된 글리프는 무효화되거나 제거될 때까지 재사용됩니다.

서버나 CDN에서 폰트를 동적으로 로드할 수 있습니까?

네 — 그것은 개발자 측의 일이며, UniText는 방해하지 않습니다. 직접 작성한 코드(UnityWebRequest)로 폰트 바이트를 다운로드하고, CreateFontAsset(byte[])를 통해 런타임에 그것으로 UniTextFont를 빌드하십시오. 폰트를 필요한 문자만 남기도록 줄이려면(서브셋팅) UniText의 빌드 타임 도구를 사용하십시오. 패키지에는 내장 CDN 자동 로더가 없습니다 — 그것은 의도적으로 엔진이 아닌 프로젝트의 책임입니다.

폰트 및 시스템 폰트

UniText가 OS 시스템 폰트를 사용할 수 있습니까? 메모리와 시작 시간 면에서 비용이 얼마나 듭니까?

시스템 폰트 자동 선택. 데스크톱과 모바일에서 자체 폰트는 선택 사항이며 WebGL은 지정한 폰트 사용.

WebGL은 시스템 폰트를 지원합니까?

시스템 폰트 자동 선택. 데스크톱과 모바일에서 자체 폰트는 선택 사항이며 WebGL은 지정한 폰트 사용.

Font Memory Mapping

큰 폰트 파일을 필요할 때 디스크에서 읽으며 관리 메모리에 전체 복사본을 유지하지 않음. 사용하지 않는 폰트는 압축 상태 유지. WebGL과 에디터의 내장 폰트는 메모리 데이터를 사용합니다. 파일 기반 폰트는 메모리 매핑을 사용합니다.

진정한 픽셀 폰트

선명한 픽셀, 자동 격자 감지, 격자에 맞춘 효과와 애니메이션. 벡터 픽셀 폰트와 비트맵 폰트가 스타일 시스템 공유. Pixel Grid의 정수 배수 크기에서 픽셀이 정확히 맞습니다. Snap To Pixel Grid는 효과와 애니메이션도 정렬하며 비활성화하면 서브픽셀 이동이 가능합니다.

글리프 아틀라스 — SDF Detail 및 Tile Size

“SDF Detail”과 “Tile Size Offset”은 실제로 무슨 일을 합니까?

글리프는 세 가지 크기 — 64, 128, 256 — 의 타일에 담기며, 크기는 컨투어 복잡도에 따라 선택됩니다(세그먼트가 많으면 → 128/256, 컨투어가 단순하면 → 64). • SDF Detail은 복잡도 추정치에 대한 곱셈 계수입니다. 이 값을 높이면 이미 단순하지 않은 글리프가 더 큰 타일로 올라갈 가능성이 커집니다. (정말로 단순한 형태는 64에 머뭅니다 — 이 계수는 임계값을 넘는 글리프에만 영향을 줍니다.) • Tile Size Offset은 크기 사다리를 따라 이동하는 강제적인 단계입니다(선택된 64 + 오프셋 1 → 128; 범위 −2..+2).

성능을 위해 둘 중 어느 것을 우선시해야 합니까?

둘 다 단독으로는 아닙니다 — 둘 다 최종 타일 크기만 결정하며, 비용은 그 크기 하나로만 정해집니다. 동일한 타일 크기로 귀결되는 두 조합은 정확히 같은 비용이 듭니다. 여전히 허용 가능한 품질을 내는 가장 작은 타일 크기를 목표로 하십시오.

런타임 성능

UniText는 언제 글리프를 래스터화합니까? 매 프레임마다 메모리를 복사합니까?

새 글리프는 래스터화와 업로드가 필요합니다. 캐시된 글리프는 무효화되거나 제거될 때까지 재사용됩니다.

많은 새 텍스트가 한꺼번에 나타날 때 잠깐 끊김이 발생하는 이유는 무엇입니까?

새 글리프는 래스터화와 업로드가 필요합니다. 캐시된 글리프는 무효화되거나 제거될 때까지 재사용됩니다.

Profiler에 UniText 잡(job)이 보이지 않습니다 — 멀티스레딩이 실제로 작동하고 있습니까?

Core가 렌더링 전 텍스트 작업을 조율합니다. 작업 스레드와 Burst가 큰 부하를 처리하며 부분 변경은 해당 처리 단계만 무효화합니다.

MonoBehaviour.Update()가 성능을 해칩니까? 단일 UniTextManager가 필요합니까?

Core가 렌더링 전 텍스트 작업을 조율합니다. 작업 스레드와 Burst가 큰 부하를 처리하며 부분 변경은 해당 처리 단계만 무효화합니다.

지원 및 토론

질문, 도움 요청, 토론의 기본 채널은 Discord입니다. 버그 신고와 기능 요청은 공개 이슈 트래커를 이용해 주십시오.

지원 및 토론: [email protected]