Action Block Script Functions
스크립트 자산 소개
GameMaker의 자산 브라우저에서 가장 중요한 자산 중 하나가 스크립트 자산입니다. 스크립트는 사용자 정의 함수들을 담아두는 특별한 자산으로, 직접적으로 게임에서 호출되지는 않습니다. 모든 스크립트는 전역 범위를 가지며, 게임이 시작될 때 자동으로 실행됩니다. 이를 통해 게임 전반에서 사용할 변수를 정의하거나 사용할 함수들을 설정할 수 있습니다.
GML 비주얼 스크립트 생성
GML 비주얼 스크립트는 한 개 이상의 사용자 정의 함수를 추가할 수 있습니다. 함수를 만들기 위해서는 Declare A New Function이라는 액션을 사용합니다. 이런 방식으로 정의한 함수는 전역 범위를 가지며, 내장 GML 비주얼 액션과 유사하게 동작합니다. 즉, 다양한 값을 받아들이고 (없을 수도 있음), 작업을 수행하며, 필요에 따라 값을 반환하거나 반환하지 않을 수 있습니다.
스크립트를 생성하려면 자산 브라우저에서 마우스 오른쪽 버튼을 클릭하고 Create를 선택한 후 Script를 선택합니다. 이렇게 하면 새로운 GML 비주얼 스크립트가 생성되고 편집기 창이 열립니다.
스크립트 이름 및 구성
스크립트의 이름은 자산 브라우저에서 오른쪽 클릭 후 Rename을 선택하거나 더블 클릭하여 변경할 수 있습니다. 스크립트 이름은 반드시 문자로 시작해야 하며, 문자, 숫자 또는 _ 기호만 포함해야 합니다. 스크립트에는 기본적으로 Declare A New Function 액션이 미리 작성되어 있어 이를 기반으로 추가적인 함수 선언을 할 수 있습니다.
함수 정의 및 인자
함수를 정의할 때는 함수의 이름과 필요한 경우 인자의 이름을 정해야 합니다. 인자는 함수에서 입력 값으로 사용됩니다. 주의할 점은 함수가 값을 반환할 수도 있다는 것입니다. 예를 들어, set_vec() 함수를 정의할 수 있습니다.
기본 사용 예제
예를 들어, 다음과 같은 방식으로 함수 호출을 할 수 있습니다.
result = myFunction(arg1, arg2);
함수 반환값
사용자 정의 함수는 값을 반환할 수 있으며(이때 Return 액션 사용), 이를 통해 계산 메소드를 구성하기도 하고 복잡한 충돌 감지 후 인스턴스 ID를 반환하는 등 다양한 작업을 수행할 수 있습니다. 단, 반환이 발생하면 함수가 종료되며, 이후의 액션은 실행되지 않습니다.
예시
모든 인스턴스를 체크하여 플레이어 오브젝트가 있는지 확인하는 함수 예시:
function check_player() {
for (var i = 0; i < instance_count; i++) {
if (instance_id[i] == player_object) {
return true;
}
}
return false;
}
함수를 호출하는 방법은 다음과 같습니다.
playerFound = check_player();
선택적 인자와 기본 값
인자에 기본 값을 설정할 수 있으며, 이를 통해 호출 시 인자를 제공하지 않더라도 기본 값이 사용됩니다.
실용적인 예제
함수를 만들 때는 객체 이벤트에서 사용할 수 있는 모든 액션을 활용할 수 있으며, 함수 내에서 다른 함수를 호출하는 방식으로 코드의 모듈화도 가능합니다. 이러한 방법으로 스크립트를 작성하면 동일한 액션 시퀀스를 반복해서 만드는 시간을 절약할 수 있으며, 코드 가독성도 향상되어 디버깅이 쉬워집니다.
예제 테이블
아래는 함수 예제와 해당 설명을 정리한 표입니다.
| 함수 이름 | 설명 |
|---|---|
| check_player | 모든 인스턴스를 확인하여 플레이어가 있는지 반환 |
| calculate_score | 점수를 계산하여 반환 |
| set_vec | 벡터 값을 설정 |