DS 리스트 읽기 함수 설명
ds_list_read
함수는 이전에 ds_list_write()
를 사용하여 문자열로 저장된 DS 리스트를 재생성하는 데 사용됩니다. 이 함수를 사용하기 위해서는 먼저 문자열을 읽어들일 새로운 DS 리스트를 생성해야 하며, 만약 해당 DS 리스트가 이미 존재하고 정보가 저장되어 있다면, 읽기 전에 해당 정보는 지워집니다. 이 함수는 게임의 저장/로드 메커니즘을 만들 때 매우 중요합니다.
함수 문법
ds_list_read(id, str [, legacy]);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
id | DS List ID | 읽어들일 데이터 구조의 핸들입니다. |
str | String | 읽어들일 문자열입니다. |
legacy | Boolean | 선택 사항으로, true 또는 false로 설정할 수 있으며, 생략 가능. |
반환값
N/A
활용 예제
아래는 ds_list_read
함수를 사용하는 예제 코드입니다.
list = ds_list_create(); // 새로운 DS 리스트 생성
ini_open("save.ini"); // ini 파일 열기
var str = ini_read_string("Lists", "0", ""); // ini 파일에서 문자열 읽기
if (str != "") { // 문자열이 비어있지 않은지 확인
ds_list_read(list, str); // DS 리스트에 문자열 읽기
}
ini_close(); // ini 파일 닫기
위의 코드는 리스트를 생성하고 그 인덱스를 "list" 변수에 저장합니다. 그런 다음 ini 파일을 열고 문자열을 읽어들인 후, 문자열이 비어 있지 않은지 확인합니다. 이 문자열은 새로 생성된 DS 리스트에 읽혀집니다.
추가 활용 예제
- 게임 저장 기능 구현
gml // 게임 상태를 저장하는 함수 function save_game() { var save_list = ds_list_create(); // 게임 상태 정보를 리스트에 추가 ds_list_add(save_list, player_score); ds_list_add(save_list, player_position); // 리스트를 문자열로 변환하여 저장 var save_string = ds_list_write(save_list); ini_open("save.ini"); ini_write_string("Game", "SaveData", save_string); ini_close(); ds_list_destroy(save_list); // 리스트 메모리 해제 }
- 게임 로드 기능 구현
gml // 게임 상태를 로드하는 함수 function load_game() { var load_list = ds_list_create(); ini_open("save.ini"); var str = ini_read_string("Game", "SaveData", ""); if (str != "") { ds_list_read(load_list, str); player_score = ds_list_find_value(load_list, 0); // 점수 복원 player_position = ds_list_find_value(load_list, 1); // 위치 복원 } ini_close(); ds_list_destroy(load_list); // 리스트 메모리 해제 }
- 리스트 데이터 수정
gml // 리스트에서 특정 값 수정 function update_list_value(ds_list, index, new_value) { if (index < ds_list_size(ds_list)) { ds_list_replace(ds_list, index, new_value); } }
이 예제들은 ds_list_read
와 관련된 다양한 활용 방법을 보여줍니다.