폰트 추가 (font_add_sprite_ext) 함수 설명
이 문서는 GameMaker에서 `font_add_sprite_ext` 함수를 사용하여 스프라이트를 기반으로 새로운 폰트를 만드는 방법에 대해 설명합니다. 각 하위 이미지는 개별 기호 또는 문자를 나타냅니다.
## 함수 개요
`font_add_sprite_ext` 함수는 스프라이트 애셋을 사용하여 새로운 폰트 애셋을 생성하는 데 도움을 줍니다. 일반적인 `font_add_sprite()` 함수와 달리, 이 함수는 "string_map" 인자를 사용하여 스프라이트의 하위 이미지 순서를 정의합니다.
### 주요 인자 설명
|인자|유형|설명|
|---|---|---|
|`spr`|스프라이트 자산|폰트를 기반으로 할 스프라이트입니다.|
|`string_map`|문자열|스프라이트 하위 이미지 순서를 결정하는 문자열입니다.|
|`prop`|불린|비례 폰트 여부를 설정합니다. (true: 비례, false: 비비례)|
|`sep`|실수|각 문자 간의 간격을 설정합니다.|
### 반환값
- 이 함수는 폰트 자산의 핸들을 반환하며, 해당 핸들은 이후 코드에서 필요합니다.
- 만약 함수가 실패하면 -1을 반환합니다.
### 사용 예시
다음은 `font_add_sprite_ext` 함수를 사용해서 새로운 폰트를 만드는 예제입니다:
```gml
global.Font = font_add_sprite_ext(spr_CalcFont, "0123456789+-*/=", true, 2);
위 코드는 spr_CalcFont
라는 스프라이트로부터 새로운 폰트 애셋을 생성하고, 그 인덱스를 global.Font
변수에 저장합니다. 스프라이트 폰트의 하위 이미지는 지정된 문자열에 따라 매핑됩니다.
추가 사항
- 폰트 정렬 기능을 사용하려면 (예:
draw_set_halign()
) 스프라이트의 원점이 좌상단으로 설정되어 있어야 합니다. - GameMaker에서 폰트를 로드한 후, 더 이상 필요하지 않을 경우에는
font_delete()
를 사용하여 메모리 누수를 방지해야 합니다.
활용 및 응용 예제
1. 비례 폰트 만들기
비례 폰트를 사용하면 각 문자의 실제 너비에 따라 공간을 배치할 수 있습니다.
global.ProportionalFont = font_add_sprite_ext(spr_Proportional, "AaBbCcDdEeFf", true, 1);
2. 고정 너비 폰트 사용하기
모노스페이스 폰트를 사용하여 각 문자를 동일한 너비로 표시합니다.
global.MonoFont = font_add_sprite_ext(spr_MonoFont, "ABCDEFG", false, 0);
3. 문자 간격 조절하기
문자 간격을 확대하여 가독성을 높일 수 있습니다.
global.SpreadFont = font_add_sprite_ext(spr_SpreadFont, "XYZ", true, 5);
결론
font_add_sprite_ext
함수는 스프라이트를 기반으로 폰트를 만들고, 그 폰트를 다양한 방식으로 적용할 수 있는 유용한 방법입니다. 이 함수를 통해 게임 내에서 사용자 정의 폰트를 쉽게 활용할 수 있습니다. ```