문자열 사용하기
게임에서 텍스트를 사용할 때, 대화, 메뉴 또는 디버깅을 위해 문자열을 사용합니다. GML에서 텍스트는 문자열로 생성되며, 이는 변수에 저장될 수 있습니다. "문자열"은 텍스트를 구성하는 "문자들의 집합"을 의미합니다. GameMaker는 문자열을 다양한 방법으로 조작할 수 있는 완전한 함수 세트를 제공합니다. 여기에는 문자열 삽입, 문자열 복사 및 문자열 내의 숫자나 문자를 파싱하는 기능이 포함됩니다. 또한 문자열을 다루기 위한 고급 함수도 제공하며, 여기에는 문자열 다듬기, 배열로 분할, 배열에서 연결 및 문자 반복 등이 포함됩니다. 마지막으로, GameMaker는 구조체와 인스턴스를 문자열 표현으로 변환하는 편리한 방법도 제공합니다.
문자열 기본
문자열은 변수의 한 종류입니다. 문자열을 생성하는 가장 간단한 방법은 텍스트를 큰따옴표("")로 감싸는 것입니다.
my_first_string = "Hello World!";
위의 코드는 "Hello World!"라는 문자열을 생성하고 이를 my_first_string
이라는 변수에 할당합니다. 작은따옴표(' ')는 허용되지 않습니다. 문자열을 여러 줄에 걸쳐 나누어 작성할 수는 없지만, 문자열 리터럴 식별자 @
를 사용하여 문자열의 시작 따옴표 앞에 붙이면 가능합니다.
이스케이프 문자
문자열 내에 특수 문자를 추가해야 할 때가 있습니다. 예를 들어, 큰따옴표, 줄 바꿈 문자 또는 특정 문자 코드가 있는 문자를 추가할 수 있습니다. 이를 위해 이스케이프 문자를 사용할 수 있습니다. 이스케이프 문자는 백슬래시(\
) 기호로 시작합니다. 예를 들어, 문자열 내에 큰따옴표를 넣고 싶다면 다음과 같이 작성할 수 있습니다.
str = "Hello\"World\"!";
GameMaker는 4바이트 폭의 유니코드 문자 지원을 제공하여, 유니코드 문자를 인코딩하고 디코딩할 수 있습니다. 유니코드 문자를 다루기 위해서는 백슬래시(\
)를 사용하여 유니코드 리터럴을 표시할 수 있습니다. 예를 들어, "á"는 "\u00e2"
로 표현할 수 있습니다.
문자열 이스케이프 문자 표
상수 | 설명 |
---|---|
줄 바꿈 | |
\r | 캐리지 리턴 (0x0d) |
\b | 백스페이스 (0x08) |
\f | 폼 피드 (0x0c) |
\t | 수평 탭 (0x09) |
\v | 수직 탭 (0x0b) |
\ | 백슬래시 자체 (0x5c) |
\a | 경고 (0x07) |
\u[16진수] | 유니코드 문자 삽입 |
\x[16진수] | 16진수 리터럴 문자 삽입 |
[8진수] | 8진수 유니코드 문자 삽입 |
다중 줄 문자열 리터럴
문자열 전체를 @
기호로 시작하면 다중 줄 문자열 리터럴을 생성할 수 있습니다.
var test = @"This string has line breaks over multiple lines";
위 코드는 줄 바꿈이 포함된 문자열을 생성합니다. 다중 줄 문자열 리터럴은 이스케이프 문자를 지원하지 않으므로, 문자열에 큰따옴표를 포함하려면 문자열을 나누어야 합니다.
템플릿 문자열
템플릿 문자열은 문자열을 생성하고 형식화하는 편리한 구문을 제공합니다. 문자열 리터럴 앞에 $
기호를 붙이고 중괄호 {}
안에 표현식을 포함하여 생성할 수 있습니다.
var _world = "Earth";
var _template = $"Hello {_world}!";
위 코드는 "Hello Earth!"라는 문자열을 생성합니다. 중괄호 {}
안에 있는 모든 것은 일반 GML로 실행됩니다.
toString() 메서드
구조체나 객체의 인스턴스에 대한 참조가 문자열 관련 함수에 전달되면, 해당 인스턴스의 toString
메서드가 호출됩니다.
toString = function() {
return string("I am the instance with ID {0}", id);
};
구조체 참조를 문자열 관련 함수에 전달하면 toString()
메서드가 사용됩니다. 그러나 인스턴스의 경우, 해당 범위 내에서 self
를 사용해야 합니다.
함수 참조
아래는 문자열을 다루기 위한 함수 목록입니다.
함수 이름 | 설명 |
---|---|
string | 문자열 생성 |
string_length | 문자열 길이 반환 |
string_pos | 문자열 내 위치 찾기 |
string_copy | 문자열 복사 |
string_insert | 문자열 삽입 |
string_upper | 문자열 대문자로 변환 |
string_lower | 문자열 소문자로 변환 |
string_split | 문자열 분할 |
string_join | 문자열 결합 |
string_trim | 문자열 양쪽 공백 제거 |
이 외에도 문자열을 다루기 위한 다양한 함수가 존재합니다.