메서드 변수 이해하기
메서드 변수란?
메서드 변수는 함수가 할당된 변수를 의미합니다. 이를 통해 함수를 인스턴스나 구조체에 "바인딩"하여 해당 변수를 사용해 함수를 참조할 수 있습니다. 이는 GML의 내장 함수 이름을 참조하는 것과 비슷합니다. 이 변수는 로컬, 인스턴스 또는 글로벌 범위에서 사용할 수 있습니다.
메서드 생성하기
메서드 변수를 생성하는 구문은 다음과 같습니다:
name = function(parameter1, parameter2, ...) {
statement1;
statement2;
...
}
또는
function name(parameter1, parameter2, ...) {
statement1;
statement2;
...
}
GML Visual에서 함수를 생성할 때는 ‘새로운 함수 선언’을 사용할 수 있습니다. 일반적으로 첫 번째 형식은 메서드에, 두 번째 형식은 스크립트 함수 정의에 사용됩니다.
메서드 스코프
메서드는 인스턴스나 구조체에 바인딩됩니다. 즉, 메서드 실행 중 self 변수는 바인딩된 인스턴스나 구조체를 참조합니다. 메서드 변수는 선택한 범위 내에서 사용할 수 있지만, 실제 함수는 처음 정의된 범위에 바인딩됩니다.
예제 코드
다음은 서로 다른 범위를 가진 메서드 변수를 생성하는 간단한 예입니다.
// 로컬
var _debug = function(message) {
show_debug_message(message);
}
// 인스턴스
do_maths = function(val1, val2, val3) {
return (val1 * val2) - val3;
}
// 글로벌
global.pd = function(_x1, _y1, _x2, _y2) {
return point_distance(_x1, _y1, _x2, _y2);
}
위 코드에서 다양한 매개변수 이름을 통해 서로 다른 입력을 참조합니다.
선택적 인수
메서드는 기본값이 있는 선택적 인수를 취할 수 있습니다:
create_attachment = function(_attachment, _x = x, _y = y) {
return instance_create_layer(_x, _y, layer, _attachment);
}
위 함수는 세 개의 인수를 받으며, 마지막 두 개는 선택적입니다.
정적 변수 사용
메서드에서는 정적 변수를 사용할 수 있으며, 이는 모든 함수 호출에서 값을 유지합니다. 이를 통해 메서드의 상태를 공유할 수 있습니다.
메서드는 구조체입니다
GameMaker에서는 메서드를 구조체로 저장하여 각 "메서드 구조체"는 호출할 스크립트 함수에 대한 참조와 바인딩된 구조체 또는 인스턴스를 포함합니다.
주요 함수 참조
다음은 메서드 변수와 관련된 몇 가지 도우미 함수입니다: |함수 이름|설명| |---|---| |is_method|주어진 변수가 메서드인지 확인| |method|메서드 반환| |method_get_self|바인딩된 인스턴스 또는 구조체 반환| |method_get_index|메서드의 스크립트 함수 인덱스 반환| |method_call|메서드 호출|
결론
메서드 변수는 GML에서 함수와 변수를 결합해 코드의 재사용성을 높이고, 스코프를 적절히 관리할 수 있도록 도와줍니다. 이 문서를 바탕으로 메서드 변수를 활용하여 더욱 효율적인 코드를 작성해 보세요.