GAME MAKER 강좌
KAYAN
◈ 글자크기가 큰 폰트 깨짐 방지
기본적으로 추가하는 프로그램내의 리소스 폰트기능은 필요한 글자만을 직접 골라 추가할 수
있어서 최적화에 좋습니다.
(▲ 리소스 폰트)
하지만 폰트를 텍스쳐 이미지로 출력하여 표시해야해 텍스쳐 관리가 필요하고, 문제는 폰트의 크기가
클 때는 표시하는 글자가 깨져 제대로 표시되지 않는다는 단점이 있습니다.
(▲ 글자 표시 비교)
리소스의 폰트는 모든 글자 정보를 텍스쳐 이미지에 저장하기 때문인데, 기본 범위의 폰트(영문, 숫자,
일부 특수문자)는 어느정도의 크기를 보장하지만, 포함하는 크기의 글자가 많을 수록 텍스쳐 크기에
맞게 축소해서라도 포함하게 됩니다.
그리고 축소된 텍스쳐의 글자를 원하는 크기만큼 늘려 표시하기 때문에 글자가 깨져 보이게 되는 것이죠.
이것을 방지하려면 글자가 크기가 큰 폰트는 외부파일에서 불러와 폰트에 적용하는 것이 좋습니다.
외부 폰트를 추가할 때는 font_add 함수를 사용합니다.
◎ font_add(name, size, bold, italic, first, last)
- name : 글꼴이 포함된 *.ttf 파일 경로를 지정
- size : 폰트 크기
- bold : 굵은 글씨체(true : 사용, false : 사용안함)
- italic : 기울임꼴 글씨체(true : 사용, false : 사용안함)
- first : 첫번째 문자 범위
- last : 마지막 문자 범위
font_add 함수를 사용하면 게임상에서 바로 사용할 수 있으며 직접적인 텍스쳐 관리는 필요 없습니다.
다만, 기본 폰트 리소스와는 달리 원하는 글자만 골라 추가할 수 없기 때문에, 범위 지정시 필요 없는
부분도 추가될 수 있습니다.
따라서 너무 많은 범위를 지정시 게임 실행에 문제가 발생할 수 있어 주의가 필요합니다.
◎ 문자 범위
- 기본 숫자, 영문 : 32~128
- 자음, 모음 : 12593 ~ 12644
- 전체 문자값 : 44032 ~ 55203
[Include Files] 브라우저를 활성화하고, [Open Explorer]를 눌러 윈도우 탐색기를 엽니다.
(▲ Include Files 메뉴)
(▲ 윈도우 탐색기 열기)
활성화된 윈도우 탐색기의 해당 폴더에 외부 폰트 파일을 복사하여 추가하면 폰트 사용 준비가 끝납니다.
(▲ 윈도우 탐색기 폴더에 폰트파일 추가하면 Included Files 에 자동으로 인식됨)
또는, 게임메이커 스튜디오의 Workspace에 파일을 드래그하여 바로 추가해도 됩니다(Included Files 로 추가여부에 Yes를 선택하면 추가됩니다).
Included Files 에 추가된 파일을 삭제하고 싶을 때는, [Open Explorer]를 눌러 활성화된 윈도우 탐색기 폴더에서 해당 파일을 삭제하면 됩니다.
※ [참고] 한글을 사용하려면 한글 폰트를 추가해야 합니다.
(▲ Include Files 에 폰트 포함)
이제 폰트를 불러올 이벤트에서 font_add 함수를 사용하여 게임에 사용할 폰트를 설정합니다.
보통 게임시작 이벤트, 또는, 맨 처음 순서에 있는 룸에서 폰트를 한번만 설정하면 게임 내내 사용할 수 있죠.
global.new_font = font_add("NanumGothic.ttf", 24, true, true, 32, 55203); |
그리고 글자를 표시하고 싶을 때는, [Draw 이벤트], [Draw GUI이벤트]에서 draw_set_font(font) 함수를 사용하여 폰트를 적용하고,
draw_text 함수를 사용하여 글자를 표시합니다.
draw_set_font(global.new_font); draw_text_color(32, 32, "1234 ABCD abcd 테스트", c_black, c_black, c_black, c_black, 1); |
더이상 폰트가 필요없다면 font_delete(font)함수를 사용하여 추가된 폰트를 메모리에서 제거합니다.
폰트가 제거된 상태에서는 해당 폰트를 호출하면 오류가 발생하기 때문에 주의하셔야 해요.
일반적으로 게임내에 추가한 폰트를 제거할 때는 게임을 종료할 때 제거합니다.
font_delete(global.new_font); |
(▲ 테스트 화면)
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2]룸 - 이펙트 레이어 (0) | 2023.01.13 |
---|---|
[게임메이커 강좌-기초][GMS2]나인슬라이스 (0) | 2023.01.12 |
[게임메이커 강좌-기초][GMS2]오래된 런타임 캐시 클리어(디스크 용량 확보) (0) | 2022.12.18 |
[게임메이커 강좌-기초][GMS2] 서피스 저장하기 (0) | 2021.03.29 |
[게임메이커 강좌-기초][GMS2] 게임화면 캡쳐하기 (0) | 2021.03.29 |
댓글