DS 맵 클리어 함수 설명
ds_map_clear
함수는 이전에 생성된 DS 맵의 모든 키/값 쌍을 지우는 기능을 제공합니다. 하지만 이 함수는 DS 맵 자체를 메모리에서 삭제하지는 않습니다. DS 맵을 메모리에서 삭제하려면 ds_map_destroy()
함수를 사용해야 합니다.
맵을 클리어할 때 주의할 점은, 맵에 저장된 데이터 구조체의 참조가 해제되어 메모리 누수가 발생할 수 있다는 것입니다. 따라서 맵을 클리어하기 전에 모든 데이터 구조체 항목을 수동으로 삭제해야 합니다. 단, 맵의 항목 중에 DS 리스트나 다른 DS 맵으로 플래그가 설정된 항목이 있을 경우, 이 항목들은 클리어되지 않고 자동으로 삭제되며 메모리가 정리됩니다.
문법
ds_map_clear(id);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
id | 핸들 | 클리어할 데이터 구조의 핸들 |
반환값
- 없음
예제
if (global.new_game) {
ds_map_clear(inventory);
}
위의 예제는 글로벌 변수를 확인하여 참이 경우, 인스턴스 변수 "inventory"에 인덱스된 DS 맵의 모든 키/값 쌍을 클리어합니다(하지만 삭제되지는 않습니다).
활용 예제
예제 1: 게임 인벤토리 초기화
if (global.reset_inventory) {
ds_map_clear(inventory);
}
예제 2: 특정 조건에서 맵 클리어
if (player.health <= 0) {
ds_map_clear(player_items);
}
예제 3: 새로운 게임 시작 시 인벤토리 클리어
if (global.start_new_game) {
ds_map_clear(inventory);
}
예제 4: 레벨 클리어 후 맵 클리어
if (level_cleared) {
ds_map_clear(level_data);
}
예제 5: 특정 이벤트 발생 시 맵 클리어
if (event_triggered) {
ds_map_clear(event_data);
}
이와 같은 방식으로 ds_map_clear
함수를 활용하여 다양한 상황에서 DS 맵을 클리어할 수 있습니다.