layer_has_instance 함수 설명
layer_has_instance 함수는 특정 인스턴스가 주어진 레이어에 현재 할당되어 있는지를 확인하는 데 사용됩니다. 이 함수는 레이어 핸들(레이어를 생성할 때 layer_create()를 사용하여 얻은)이나 레이어 이름(문자열로 제공 - 성능에 영향을 미칠 수 있음)과 확인할 인스턴스 ID를 입력으로 받습니다. 또한 object_index(즉, 자산 브라우저에서의 객체 이름)를 제공하면, 해당 객체의 인스턴스가 주어진 레이어에 있는지를 확인합니다. 함수는 인스턴스가 레이어에 있으면 true를, 그렇지 않으면 false를 반환합니다.
문법
layer_has_instance(layer_id, instance_id)
인자 설명
| 인자 이름 | 타입 | 설명 |
|---|---|---|
| layer_id | String 또는 Layer ID | 타겟 레이어의 핸들(또는 레이어 이름) |
| instance_id | Instance ID | 확인할 인스턴스의 고유 ID 또는 객체 인덱스 |
반환 값
- Boolean: 인스턴스가 레이어에 있으면
true, 없으면false
예제
if (!layer_has_instance(global.Bullet_Layer, obj_Bullet_Parent)) {
layer_destroy(global.Bullet_Layer);
}
위 코드는 주어진 레이어에 "obj_Bullet_Parent" 객체의 인스턴스가 있는지를 확인하고, 없다면 레이어를 파괴합니다.
활용 예제
- 레이어에 특정 객체가 있는지 확인 후 행동 수행
if (layer_has_instance(global.Enemy_Layer, obj_Enemy)) {
// 적이 레이어에 있을 때의 행동
}
- 레이어에 인스턴스가 없을 경우 새로운 인스턴스 생성
if (!layer_has_instance(global.Item_Layer, obj_Item)) {
instance_create_layer(0, 0, global.Item_Layer, obj_Item);
}
- 레이어에 인스턴스가 존재하는지 체크 후 레이어 삭제
if (!layer_has_instance(global.Projectile_Layer, obj_Projectile)) {
layer_destroy(global.Projectile_Layer);
}
- 특정 레이어에 여러 인스턴스가 있는지 확인
if (layer_has_instance(global.Powerup_Layer, obj_Powerup)) {
// 파워업이 레이어에 있을 때의 행동
}
- 레이어에 특정 객체가 있는지 확인 후 UI 업데이트
if (layer_has_instance(global.UI_Layer, obj_HealthBar)) {
// UI 업데이트
}
이와 같은 방식으로 layer_has_instance 함수를 활용하여 게임 내 다양한 상황에서 레이어와 인스턴스를 관리할 수 있습니다.