layer_set_target_room 함수 설명
layer_set_target_room 함수는 GameMaker에게 모든 후속 레이어 함수가 지정된 방에 적용되어야 함을 알려줍니다. 이를 통해 현재 방이 아닌 방에서 레이어와 레이어 내용을 프로그래밍적으로 변경하거나 생성할 수 있습니다. 레이어 또는 레이어 요소를 방에 추가한 후에는 layer_reset_target_room 함수를 호출하여 방 대상을 초기화하거나, -1의 room 인수를 사용하여 이 함수를 다시 호출할 수 있습니다.
다른 방을 대상으로 하는 동안에는 모든 일반 레이어 함수를 사용할 수 있지만, instance_create_layer 또는 instance_create_depth를 사용하여 인스턴스를 생성할 수 없으며, layer_add_instance 함수도 사용할 수 없습니다.
문법
layer_set_target_room(room);
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| room | Room Asset | 모든 후속 레이어 함수의 대상을 지정할 방, 현재 방을 위해서는 -1 |
반환값
N/A
예제
layer_set_target_room(rm_Game);
var l = layer_get_id("SpriteAssets");
repeat(50) {
var _x = irandom(1000);
var _y = irandom(1000);
layer_sprite_create(l, _x, _y, spr_Trees);
}
layer_reset_target_room();
위의 코드는 "rm_Game" 방을 대상으로 설정한 후, 해당 방의 "SpriteAssets"라는 레이어 핸들을 가져옵니다. 이 레이어 핸들은 50개의 랜덤 스프라이트 자산을 레이어에 추가하는 데 사용되며, 이후 레이어 대상을 현재 방으로 재설정합니다.
활용 예제
- 다른 방에서 레이어 생성하기
layer_set_target_room(rm_Level2);
var layer_id = layer_get_id("BackgroundLayer");
layer_sprite_create(layer_id, 0, 0, spr_Background);
layer_reset_target_room();
- 랜덤 위치에 오브젝트 추가하기
layer_set_target_room(rm_Game);
var layer_id = layer_get_id("EnemyLayer");
for (var i = 0; i < 10; i++) {
var _x = irandom(room_width);
var _y = irandom(room_height);
instance_create_layer(_x, _y, layer_id, obj_Enemy);
}
layer_reset_target_room();
- 특정 조건에 따라 레이어 변경하기
if (player_score > 100) {
layer_set_target_room(rm_HighScore);
var layer_id = layer_get_id("HighScoreLayer");
layer_sprite_create(layer_id, 100, 100, spr_HighScore);
layer_reset_target_room();
}
- 게임 진행에 따라 레이어 업데이트하기
layer_set_target_room(rm_Game);
var layer_id = layer_get_id("DynamicLayer");
for (var i = 0; i < 5; i++) {
var _x = irandom(room_width);
var _y = irandom(room_height);
layer_sprite_create(layer_id, _x, _y, spr_DynamicObject);
}
layer_reset_target_room();
이와 같은 방법으로 layer_set_target_room 함수를 활용하여 다양한 방에서 레이어를 동적으로 관리하고 업데이트할 수 있습니다.