레이어 삭제 함수 설명
layer_destroy 함수는 주어진 레이어를 삭제하는 기능을 제공합니다. 이 함수는 레이어 핸들(레이어를 생성할 때 layer_create()를 통해 얻은)이나 레이어 이름(문자열 형태)을 인자로 받아 현재 방에서 해당 레이어를 제거합니다.
주요 기능
- 레이어 삭제: 레이어 핸들이나 이름을 사용하여 레이어를 삭제합니다.
- 방 편집기에서 생성된 레이어: 방 편집기에서 생성된 레이어는 방을 나갔다가 다시 들어오면 원래의 내용으로 재생성됩니다.
- 영구 방: 방이 영구적(persistent)일 경우, 레이어는 제거되며, 방의 지속성이 꺼지지 않는 한 재생성되지 않습니다.
- 내용 삭제: 레이어를 삭제하면 그 안의 모든 내용도 함께 삭제됩니다. 따라서 배경, 타일 맵 등의 참조 ID는 더 이상 유효하지 않으며, 레이어에 할당된 인스턴스도 삭제됩니다. 이때 해당 인스턴스의
Destroy Event와Clean Up Event가 동시에 실행됩니다.
문법
layer_destroy(layer_id)
인자 설명
| 인자 이름 | 타입 | 설명 |
|---|---|---|
| layer_id | String 또는 Layer | 삭제할 레이어의 핸들이나 레이어 이름 |
반환값
- N/A
활용 예제
아래 코드는 "obj_Bullet_Parent" 객체의 인스턴스가 존재하지 않는 경우, 글로벌 변수에 저장된 ID를 사용하여 레이어를 삭제하는 예제입니다.
if (!instance_exists(obj_Bullet_Parent)) {
layer_destroy(global.Bullet_Layer);
}
추가 활용 예제
- 특정 조건에 따라 레이어 삭제하기
if (score > 100) {
layer_destroy("HighScoreLayer");
}
- 게임 오버 시 레이어 삭제하기
if (game_over) {
layer_destroy(global.GameLayer);
}
- 레벨 클리어 시 레이어 삭제하기
if (level_cleared) {
layer_destroy("LevelLayer");
}
- 특정 시간 후 레이어 삭제하기
if (current_time > 60) {
layer_destroy("TimeBasedLayer");
}
이와 같은 방식으로 layer_destroy 함수를 활용하여 게임의 다양한 상황에서 레이어를 동적으로 관리할 수 있습니다.