method 함수 설명 및 활용 예제
method
함수는 기존의 함수(또는 메서드)를 주어진 인스턴스나 구조체에 바인딩하여 나중에 사용할 수 있는 새로운 메서드 변수를 생성하는 기능을 제공합니다. 이 함수는 활성화된 인스턴스의 ID(객체 인덱스가 아닌) 또는 구조체 참조와 바인딩할 함수 ID(또는 메서드 참조)를 입력받습니다. 반환된 메서드는 주어진 인스턴스나 구조체에 "바인딩"되어 항상 해당 인스턴스/구조체의 범위 내에서 실행됩니다.
문법
method(struct_ref_or_instance_id, func);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
struct_ref_or_instance_id | Struct 또는 Object Instance | 사용할 구조체 또는 인스턴스의 고유 참조 또는 ID 값 (self 또는 undefined 가능) |
func | Script Function 또는 Method | 사용할 함수(ID) 또는 메서드 참조 |
반환값
- Method: 바인딩된 메서드
예제
var _inst = instance_position(mouse_x, mouse_y, obj_enemy);
if (instance_exists(_inst)) {
enemy_func = method(_inst, enemy_ai);
}
위 코드는 마우스 위치에 적 인스턴스가 존재하는지 확인합니다. 존재한다면 enemy_ai
메서드가 적 인스턴스에 바인딩되고 새로운 메서드 변수 enemy_func
로 반환됩니다.
활용 예제
- 적 AI 메서드 바인딩
var enemy_instance = instance_position(mouse_x, mouse_y, obj_enemy);
if (instance_exists(enemy_instance)) {
enemy_behavior = method(enemy_instance, enemy_ai);
enemy_behavior(); // 적 AI 실행
}
- 플레이어 행동 바인딩
var player_instance = instance_id(player);
player_action = method(player_instance, player_move);
player_action(); // 플레이어 이동 실행
- UI 버튼 클릭 이벤트 바인딩
var button_instance = instance_position(mouse_x, mouse_y, obj_button);
if (instance_exists(button_instance)) {
button_click = method(button_instance, button_on_click);
button_click(); // 버튼 클릭 이벤트 실행
}
- NPC 대화 메서드 바인딩
var npc_instance = instance_position(mouse_x, mouse_y, obj_npc);
if (instance_exists(npc_instance)) {
npc_talk = method(npc_instance, npc_converse);
npc_talk(); // NPC 대화 실행
}
- 게임 오버 처리 메서드 바인딩
var game_over_instance = instance_id(obj_game_over);
game_over_method = method(game_over_instance, handle_game_over);
game_over_method(); // 게임 오버 처리 실행
이와 같이 method
함수를 활용하여 다양한 인스턴스와 메서드를 바인딩하고, 필요할 때마다 호출하여 사용할 수 있습니다.