안녕하세요

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


페이지 목록

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이나 바이너리 파일로 변환하여 저장을 해서 유저가 게임을 끄더라도 현재 스탯이나 보유한 카드를 저장할 수 있다.


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

2025년 12월 25일 목요일

[유니티][Unity][C#] as를 이용한 형변환

 IHpBarView hpBar = aView;


BossView bossView = hpBar as BossView;


if(bossView != null)
{ //bossView function 호출

   bossView.Die();
}

else

{
       Debug.LogWarning("이 뷰는 BossView가 아님");

}


이렇게 as 를 통해서 IHpBarView를 상속받는 BossView 형으로 변환 시킬 수 있다.


제미나이를 참조하여 만들었습니다.

2025년 12월 17일 수요일

LMAdSize.h 를 찾을 수 없다는 에러가 발생했을 때 해결 방법

유니티에서 iOS 빌드를 했을 때 .xcodeproj 로 열면 발생하는 이슈이다.

xcodeproj는 내부적인 코드만을 사용하기 때문에 외부 요소들을 배제하여 빌드하기 때문에 외부에 대한 코드를 가져오지 못해서 발생한다.

 그래서 .xcworkspace를 열어야 한다.


 그런데 보면 xcworkspace가 보이지 않을 수 있다. 이 때 해당 프로젝트에 Podfile 이 만들어졌는지 확인 해보자. 이게 없다면 나도 해결방법을 알지못하는데 이게 있다면 문제는 해결할 수 있다

podfile은 "애드몹이랑 광고를 돌리려면 A,B,C라는 파일들이 필요해" 라는 명단이 적혀 있다. 그런데 이걸 실제로 설치하려면 pod install을 돌려야 한다. 이걸 자동으로 돌리게 되있는데 iOS 환경이 복잡하여 이걸 실행 못하는 상황이 발생한다. 이럴 때 수동으로 pod install을 입력해서 수동 설치를 해줘야 한다.


 이렇게 pod install을 하면 xcodeproj에 이런 외부 부품들을 결합하여 xcworkspace를 만들어 주게 된다. 

 

결론: xcworkspace를 열어서 빌드하면 된다. 그런데 이게 없다면 podfile이 있는지 확인해 보고 있다면 해당 폴더에서 pod install을 하여 xcworkspace를 만들어 실행하면 된다.


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