room 변수 설명 및 활용 예제
room 변수란?
room 변수는 게임이 실행 중인 현재 방의 핸들을 보관하는 변수입니다. 이 변수는 읽기 전용이 아니며, 변수를 변경하면 현재 방의 핸들이 변경되는 것이 아니라, 설정한 핸들에 맞춰 방이 변경됩니다. 이때, 유효하지 않은 인덱스로 변수를 변경하면 게임이 오류를 발생시키고 종료될 수 있으므로 주의해야 합니다. 일반적으로 방을 변경할 때는 room_goto를 사용하는 것이 더 좋은 방법입니다.
방 ID는 자산 브라우저나 방 관리자에서의 순서에 기반하지 않으므로, 숫자 값을 직접 제공하는 것은 피해야 합니다. 대신, 참조하고자 하는 자산의 방 상수를 사용하거나 함수를 통해 방을 가져오는 것이 좋습니다.
문법
room
반환값
- 방 자산
예제
if (room == rm_level1) {
audio_play_sound(snd_level1, 1, 1);
}
위 코드는 현재 방이 첫 번째 레벨인지 확인하고, 그렇다면 해당 레벨의 음악을 재생합니다.
활용 예제
1. 방 변경하기
if (player_health <= 0) {
room_goto(rm_game_over);
}
플레이어의 체력이 0 이하일 경우 게임 오버 방으로 변경합니다.
2. 방에 따라 다른 배경 음악 재생하기
if (room == rm_forest) {
audio_play_sound(snd_forest_music, 1, 1);
} else if (room == rm_castle) {
audio_play_sound(snd_castle_music, 1, 1);
}
현재 방에 따라 다른 배경 음악을 재생합니다.
3. 특정 방에서만 아이템 생성하기
if (room == rm_shop) {
instance_create_layer(100, 200, "Items", obj_health_potion);
}
상점 방에서만 건강 포션 아이템을 생성합니다.
4. 방 전환 시 효과 적용하기
if (room == rm_level2) {
show_message("레벨 2에 오신 것을 환영합니다!");
}
레벨 2로 전환될 때 환영 메시지를 표시합니다.
5. 방의 특정 객체에 접근하기
if (room == rm_battle) {
var enemy = instance_nearest(x, y, obj_enemy);
enemy.health -= 10;
}
전투 방에서 가장 가까운 적 객체의 체력을 감소시킵니다.
| 방 이름 | 방 ID | 설명 |
|---|---|---|
| 레벨 1 | rm_level1 | 첫 번째 레벨 |
| 숲 | rm_forest | 숲 배경의 방 |
| 성 | rm_castle | 성 배경의 방 |
| 상점 | rm_shop | 아이템을 구매할 수 있는 방 |
| 전투 | rm_battle | 적과 싸우는 방 |
| 게임 오버 | rm_game_over | 게임이 끝났을 때 표시되는 방 |
| 레벨 2 | rm_level2 | 두 번째 레벨 |
| 비밀 방 | rm_secret | 숨겨진 방 |
| 시작 방 | rm_start | 게임 시작 방 |
| 최종 보스 방 | rm_final_boss | 최종 보스와의 전투 방 |