layer_background_exists 함수 설명
layer_background_exists 함수는 특정 레이어에 배경 요소가 존재하는지 확인하는 데 사용됩니다. 이 함수는 레이어 핸들(레이어를 생성할 때 layer_create()를 사용하여 얻음) 또는 레이어 이름(문자열 형식으로, 성능에 영향을 미침)과 배경 요소 ID(배경 요소를 생성할 때 layer_background_create()를 사용하거나 layer_background_get_id() 함수를 사용할 때 얻음)를 입력받습니다. 함수는 요소가 존재하면 true를, 존재하지 않으면 false를 반환합니다.
이 함수는 현재 타겟 룸의 범위 내에서 작동합니다. 기본적으로 함수가 호출되는 룸에서 작동하며, 이는 layer_set_target_room() 함수를 사용하여 설정할 수 있습니다.
문법
layer_background_exists(layer_id, background_element_id)
인수 설명
| 인수 이름 | 타입 | 설명 |
|---|---|---|
| layer_id | String 또는 Layer ID | 타겟으로 할 레이어의 핸들(또는 레이어 이름) |
| background_element_id | Background Element ID | 확인할 배경 요소의 고유 ID 값 |
반환 값
- Boolean
예제
var lay_id = layer_get_id("Background_trees");
if (layer_background_exists(lay_id, global.TreesBackground)) {
layer_background_destroy(lay_id, global.TreesBackground);
}
위 코드는 "Background_trees" 레이어에서 주어진 배경 요소가 존재하는지 확인하고, 존재할 경우 해당 배경 요소를 파괴합니다(레이어는 파괴되지 않음).
활용 예제
- 배경 요소 추가 전 확인
gml var lay_id = layer_get_id("Background_sky"); if (!layer_background_exists(lay_id, global.SkyBackground)) { layer_background_create(lay_id, global.SkyBackground); } - 배경 요소 교체
gml var lay_id = layer_get_id("Background_ground"); if (layer_background_exists(lay_id, global.GroundBackground)) { layer_background_destroy(lay_id, global.GroundBackground); } layer_background_create(lay_id, global.NewGroundBackground); - 배경 요소 상태 체크
gml var lay_id = layer_get_id("Background_water"); if (layer_background_exists(lay_id, global.WaterBackground)) { // 배경 요소가 존재할 때의 처리 } else { // 배경 요소가 존재하지 않을 때의 처리 } - 모든 배경 요소 삭제
gml var lay_id = layer_get_id("Background_all"); if (layer_background_exists(lay_id, global.Background1)) { layer_background_destroy(lay_id, global.Background1); } if (layer_background_exists(lay_id, global.Background2)) { layer_background_destroy(lay_id, global.Background2); } - 배경 요소의 존재 여부에 따른 게임 로직
gml var lay_id = layer_get_id("Background_special"); if (layer_background_exists(lay_id, global.SpecialBackground)) { // 특별 배경이 있을 때의 게임 로직 } else { // 특별 배경이 없을 때의 게임 로직 }