ds_map_add_list 함수 설명
ds_map_add_list
함수는 미리 생성된 DS 리스트를 주어진 DS 맵의 키에 할당하는 기능을 제공합니다. 이 함수는 JSON 호환 맵을 생성하기 위해 설계되었으며, 이후 json_encode
를 사용하여 인코딩할 수 있습니다. 이 기능은 해당 기능과 함께 사용해야 합니다. DS 맵에 리스트가 추가되면, 부모 맵을 파괴할 때 포함된 리스트도 함께 파괴되어 메모리가 해제됩니다. 또한, 부모 맵에서 ds_map_clear
를 호출하면 플래그가 설정된 리스트도 파괴되고 정리됩니다.
문법
ds_map_add_list(id, key, value)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
id | DS Map | 사용할 맵의 핸들 |
key | String | 추가할 리스트의 키 |
value | DS List | 추가할 리스트의 핸들 |
반환값
N/A
예제
var j_list = ds_list_create();
ds_list_add(j_list, health);
ds_list_add(j_list, lives);
ds_list_add(j_list, score);
var j_map = ds_map_create();
ds_map_add_list(j_map, "list", j_list);
var j = json_encode(j_map);
ds_map_destroy(j_map);
위의 코드는 리스트를 생성하고 전역 변수의 다양한 값으로 채웁니다. 이 리스트는 DS 맵 내에 "중첩"되어 있으며, 맵은 JSON 문자열로 인코딩된 후 파괴되어 메모리에서 제거됩니다.
활용 예제
- 게임 상태 저장 ```gml var game_state_list = ds_list_create(); ds_list_add(game_state_list, current_level); ds_list_add(game_state_list, player_health); ds_list_add(game_state_list, player_score);
var game_state_map = ds_map_create(); ds_map_add_list(game_state_map, "state", game_state_list);
var json_game_state = json_encode(game_state_map); ds_map_destroy(game_state_map); ```
- 설정 저장 ```gml var settings_list = ds_list_create(); ds_list_add(settings_list, sound_volume); ds_list_add(settings_list, music_volume); ds_list_add(settings_list, screen_resolution);
var settings_map = ds_map_create(); ds_map_add_list(settings_map, "settings", settings_list);
var json_settings = json_encode(settings_map); ds_map_destroy(settings_map); ```
- 유저 데이터 저장 ```gml var user_data_list = ds_list_create(); ds_list_add(user_data_list, username); ds_list_add(user_data_list, achievements); ds_list_add(user_data_list, playtime);
var user_data_map = ds_map_create(); ds_map_add_list(user_data_map, "user_data", user_data_list);
var json_user_data = json_encode(user_data_map); ds_map_destroy(user_data_map); ```
이와 같은 방식으로 ds_map_add_list
함수를 활용하여 다양한 데이터를 구조화하고 JSON 형식으로 저장할 수 있습니다.