room_instance_add 함수 설명
room_instance_add 함수는 현재 방이 아닌 다른 방에 인스턴스를 추가하는 기능을 제공합니다. 이 함수는 지정된 방에 들어간 후에만 사용할 수 있는 인스턴스의 고유 ID를 반환합니다. 현재 방에 인스턴스를 생성하려면 instance_create_layer 함수를 사용해야 합니다.
이 함수를 자산 브라우저에서 생성된 방 자산에 호출하면 인스턴스가 방에 영구적으로 추가되며, game_restart를 호출해도 방이 원래 상태로 돌아가지 않습니다. 게임을 종료하고 다시 열어야만 방이 원래 상태로 돌아옵니다.
문법
room_instance_add(index, x, y, obj);
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| index | Room Asset | 객체 인스턴스를 추가할 방입니다. |
| x | Real | 새 인스턴스의 x 위치입니다. |
| y | Real | 새 인스턴스의 y 위치입니다. |
| obj | Object Asset | 추가할 인스턴스의 객체입니다. |
반환값
- Object Instance: 생성된 인스턴스의 ID입니다.
예제 코드
global.rm = room_add();
room_assign(rm_base, global.rm);
room_instance_add(global.rm, 100, 100, obj_player);
위 코드는 게임에 새로운 방을 추가하고, rm_base로 인덱스된 방의 내용을 복사한 후, 새 방의 (100, 100) 위치에 obj_player 객체의 인스턴스를 추가합니다.
활용 예제
- 다양한 방에 적 추가하기
gml var enemy_room = room_add(); room_instance_add(enemy_room, 50, 50, obj_enemy); - 특정 조건에서 인스턴스 추가하기
gml if (player_score > 1000) { room_instance_add(global.rm, 200, 200, obj_bonus); } - 게임 시작 시 여러 인스턴스 추가하기
gml var start_room = room_add(); room_instance_add(start_room, 0, 0, obj_player); room_instance_add(start_room, 150, 150, obj_enemy); - 방 전환 시 인스턴스 추가하기
gml if (room == room_transition) { room_instance_add(room_next, 100, 100, obj_transition_effect); } - 특정 위치에 아이템 추가하기
gml room_instance_add(global.rm, 300, 300, obj_item);
이와 같이 room_instance_add 함수를 활용하여 다양한 게임 상황에 맞게 인스턴스를 추가할 수 있습니다.