ds_list_clear 함수 설명
ds_list_clear
함수는 주어진 리스트 데이터 구조에서 모든 데이터를 지우는 기능을 제공합니다. 이 함수는 데이터 구조 자체를 파괴하지 않으며, 단순히 리스트의 모든 데이터를 삭제하고 리스트를 비웁니다(크기가 0이 됨). 리스트를 비우면 리스트에 저장된 데이터 구조의 참조가 해제되어 메모리 누수가 발생할 수 있으므로, 리스트를 비우기 전에 리스트에 있는 모든 데이터 구조 항목을 수동으로 파괴해야 합니다. 단, 리스트의 항목이 다른 DS 리스트나 DS 맵으로 표시된 경우에는 이 항목들이 파괴되고 메모리가 자동으로 정리됩니다.
문법
ds_list_clear(id);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
id | DS 리스트 ID | 지울 데이터 구조의 핸들 |
반환값
- N/A
활용 예제
아래 코드는 특정 변수가 특정 값에 도달했는지 확인하고, 도달했다면 "command_list"라는 변수에 인덱스가 있는 DS 리스트를 비우고, 알람을 설정하며 변수를 0으로 초기화합니다.
if (count == 15) && (!ds_list_empty(command_list)) {
ds_list_clear(command_list);
alarm[0] = game_get_speed(gamespeed_fps);
ai_count = 0;
}
추가 활용 예제
- 게임 상태 초기화
if (game_over) {
ds_list_clear(active_enemies);
reset_game();
}
- 사용자 입력 처리
if (input_received) {
ds_list_clear(user_inputs);
collect_inputs();
}
- 레벨 변경 시 데이터 정리
if (level_changed) {
ds_list_clear(current_level_items);
load_new_level();
}
- AI 행동 초기화
if (reset_ai) {
ds_list_clear(ai_actions);
initialize_ai();
}
- 퀘스트 완료 시 데이터 정리
if (quest_completed) {
ds_list_clear(active_quests);
update_quest_log();
}
이와 같이 ds_list_clear
함수를 활용하여 다양한 상황에서 리스트를 비우고 메모리를 관리할 수 있습니다.