layer_sprite_exists 함수 설명
layer_sprite_exists 함수는 특정 레이어에 스프라이트 요소가 존재하는지 확인하는 데 사용됩니다. 이 함수는 레이어 핸들(레어를 생성할 때 layer_create()를 통해 얻음) 또는 레이어 이름(문자열로 제공, 성능에 영향을 미침)과 스프라이트 요소 ID(스프라이트 요소를 생성할 때 layer_sprite_create()를 사용하거나 layer_sprite_get_id() 함수를 통해 얻음)를 입력받습니다. 함수는 요소가 존재하면 true를, 존재하지 않으면 false를 반환합니다. 이 함수는 현재 타겟 룸의 범위 내에서 작동하며, 기본적으로 함수가 호출된 룸에서 작동합니다. 타겟 룸은 layer_set_target_room() 함수를 사용하여 설정할 수 있습니다.
문법
layer_sprite_exists(layer_id, sprite_element_id)
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| layer_id | 문자열 또는 레이어 | 타겟할 레이어의 핸들(또는 문자열로 된 레이어 이름) |
| sprite_element_id | 스프라이트 요소 ID | 확인할 스프라이트 요소의 고유 ID 값 |
반환값
- Boolean: 스프라이트 요소가 존재하면
true, 존재하지 않으면false.
예제 코드
var lay_id = layer_get_id("Asset_Trees");
var spr_id = layer_sprite_get_id(lay_id, "graphic_254367CB");
if (layer_sprite_exists(lay_id, spr_id)) {
layer_sprite_destroy(spr_id);
}
위 코드는 "Asset_Trees" 레이어에서 주어진 스프라이트 요소가 존재하는지 확인하고, 존재할 경우 해당 스프라이트 요소를 파괴합니다(레이어는 파괴되지 않음).
활용 예제
- 스프라이트 요소 추가 전 체크 ```gml var lay_id = layer_get_id("Background"); var spr_id = layer_sprite_get_id(lay_id, "graphic_12345678");
if (!layer_sprite_exists(lay_id, spr_id)) { layer_sprite_create(lay_id, spr_id); } ```
- 스프라이트 요소가 존재할 경우 다른 작업 수행 ```gml var lay_id = layer_get_id("Foreground"); var spr_id = layer_sprite_get_id(lay_id, "graphic_87654321");
if (layer_sprite_exists(lay_id, spr_id)) { // 다른 작업 수행 show_message("스프라이트가 존재합니다!"); } ```
- 모든 스프라이트 요소 삭제 ```gml var lay_id = layer_get_id("Assets"); var sprite_ids = [sprite1_id, sprite2_id, sprite3_id];
for (var i = 0; i < array_length(sprite_ids); i++) { if (layer_sprite_exists(lay_id, sprite_ids[i])) { layer_sprite_destroy(sprite_ids[i]); } } ```
이러한 예제들은 layer_sprite_exists 함수를 활용하여 스프라이트 요소의 존재 여부를 확인하고, 그에 따라 다양한 작업을 수행하는 방법을 보여줍니다.