안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2026년 1월 3일 토요일

[유니티][Unity] 한글 Font 사용방법 (한글 깨짐 방지)

 한글이 들어가는 .otf 파일을 받는다. 그리고 저작권에 문제가 없는 것을 사용한다.

 내 경우에는 Pretendard-Regular.otf를 사용하였다.

본 글 작성 시점 기준으로, Pretendard는 SIL Open Font License 1.1을 따르며
해당 라이선스는 상업적 사용을 허용합니다.
실제 사용 전에는 반드시 각 폰트의 공식 배포처에 포함된 라이선스 전문을 확인하시기 바랍니다.
라이선스 정책은 변경될 수 있으며, 최종 책임은 사용자인 본인에게 있습니다.

해당 라이센스는 

🔐 SIL Open Font License (OFL) 1.1 핵심 요약

✅ 허용되는 것

  • ✔ 상업적 사용 (유료 게임, 광고 수익, 인앱결제)

  • ✔ 수정해서 사용

  • ✔ 게임에 포함해서 배포

  • ✔ 번들링 (APK/IPA 안에 포함)

👉 유니티 게임에 폰트 넣는 것 = 완전 OK


⚠️ 조건 (중요하지만 쉬움)

1️⃣ 폰트 단독 판매 금지

  • ❌ 폰트 파일만 따로 팔면 안 됨

  • ⭕ 게임 리소스 일부로 포함 → OK

2️⃣ 수정한 경우 이름 변경

  • 폰트를 수정했으면
    → 원래 폰트 이름 그대로 쓰면 안 됨

  • (수정 안 했으면 신경 안 써도 됨)

3️⃣ 라이선스 문서 포함

  • 보통 폰트 다운로드 시 OFL.txt 같이 들어 있음

  • 게임에 같이 포함하거나
    크레딧에 한 줄 표기하면 충분


🎮 Unity + 1인 개발 기준으로 현실적인 처리법

가장 안전하고 흔한 방법 (추천)

  • 폰트 파일 그대로 사용 (수정 X)

  • 크레딧에 한 줄 추가

Font: Pretendard License: SIL Open Font License 1.1

❓ 자주 헷갈리는 오해

❌ “무료니까 출처 표기 필요 없음?”

OFL는 출처 표기 강제는 아님
하지만 크레딧 표기 권장 (실무에선 거의 다 함)

❌ “유료 게임이면 안 되는 거 아님?”

완전 가능

❌ “폰트 에셋스토어에 같이 올리면?”

→ ❌ 폰트 단독 배포 성격이면 위험
→ 게임 빌드에 포함은 OK


🔥 1인 개발자 기준 결론

  • SIL Open Font License 1.1 = 상업 OK

  • Unity 유료 게임 / 광고 수익 / 인앱결제 전부 OK

  • 크레딧에 한 줄만 써주면 끝

 다운 받은 Font를 Asset/Fonts 에 폴더 채로 넣는다.


 그 후 사용할려는 Font를 우클릭한 후 Create-> TextMeshPro -> Font Asset을 선택하고

Font Asset 종류 SDF /Bitmap/ Color/ Font Asset Variant 중에서는 SDF를 대부분 선택하면 된다.

4가지 타입 차이 (Unity TMP 기준)

1️⃣ SDF Font Asset ✅ 정답

Signed Distance Field

장점

  • 해상도 바뀌어도 글자 깨짐 없음

  • 모바일 / 태블릿 / PC 전부 대응

  • Outline / Shadow / Glow 효과 가능

  • UI 스케일링 자유로움

  • TextMeshPro의 핵심 기능

단점

  • Bitmap보다 약간 무거움 (체감 거의 없음)

👉 UI / 카드 설명 / 버튼 / 숫자 전부 여기에 해당


2️⃣ Bitmap Font Asset ❌ 비추천

  • 픽셀 고정

  • 크기 키우면 바로 깨짐

  • 해상도 대응 어려움

👉 레트로 픽셀 게임 아니면 쓰지 말 것


3️⃣ Color Font Asset ❌ 거의 안 씀

  • 컬러 이모지 / 특수 아이콘용

  • 한글 UI에는 쓸 이유 없음

  • 용량 큼, 모바일 비효율


4️⃣ Font Asset Variant ❌ 초보자 금지

  • 기존 Font Asset을 기반으로

    • Outline

    • Shadow

    • Style

  • 관리 난이도 높음

  • 나중에 써도 늦음

👉 처음엔 절대 만들 필요 없음

그 후 Atlas Population Mode -> Dynamic으로 선택하고 Atlas Width Height는 2048로 둘 다 맞추는 것을 권장한다.


 이 후 TextMeshPro Text를 눌러 보면 Font 칸이 있는데 여기에 생성한 Font Asset을 선택하면 Font가 바뀌게 된다.


 챗 지피티의 도움을 받아 작성하였습니다.



2026년 1월 2일 금요일

[유니티][Unity][C#] [Range(0f,1f)] public float probaility 뜻

 [Range(0f,1f)] 

public float probability; 

 

 이렇게 적으면 probability값은 0f-1f 사이로 제한이 되게 된다.

 Unity Inspector에서 probability 변수를 슬라이더로 보여주고 값이 0.0 - 1.0 사이로 제한이 된다.

 게임 내 코드에서는 따로 값 제한을 해주지 않아도 Inspector에서 입력 범위가 자동으로 제한됨


단, Inspector에서만 0.0 - 1.0 사이 값을 정하는 거지 코드에서는 무슨 값이든 넣을 수 있다.


챗지피티를 참조하여 작성하였습니다.

2026년 1월 1일 목요일

[유니티][Unity] ScriptableObject란?

  씬에 붙지 않는 데이터 전용 객체 이다.


 인스펙터에서 값이 수정가능한 데이터 파일이다.

 여러 오브젝트가 같은 데이터를 공유하게 된다.


 씬과 생명주기에서 독립 된 에디터에서 관리 가능한 데이터 덩어리


 카드 기본 정보, 아이템 스텟, 스킬 쿨타임 등을 저장해 놓는다.


 말하자면 스텟을 미리 저장해 놓는 설계도의 역할을 한다고 보면된다.

 

 런타임 상태 관리, 플레이어 마다 다른 값 유지 등은 할 수 없다. 


 에셋과 붙어있는 데이터이기 때문에 에셋 데이터를 바꾸는 게 되기 때문이다.


챗지피티의 도움을 받아 작성하였습니다.


 

[유니티][Unity] TextArea

 유니티에서 TextArea를 적으면 Inspector 창에서 텍스트 입력칸이 늘어나는 효과를 준다. 여러줄을 작성해야 되는 스킬 설명과 같은 걸 적을 때 유용하게 쓸 수 있다.


제미나이의 도움을 받아 작성하였습니다.

[유니티][Unity] Serializable 이란

 1. 유니티 인스펙터 노출 : serializable을 쓰면 유니티 inspector 창에 노출이 되어서 inspector 창에서 데이터를 작성해서 쓸 수 있게 된다.

2. 데이터 저장 및 로드: [Serializable]이 붙어 있으면 해당 객체를 JSON이나 바이너리 파일로 변환하여 저장을 해서 유저가 게임을 끄더라도 현재 스탯이나 보유한 카드를 저장할 수 있다.


제미나이의 도움을 받아 작성하였습니다.