zip_unzip 함수 설명 및 활용 예제
함수 설명
zip_unzip
함수는 저장된 ZIP 파일을 열고, 그 내용을 지정된 디렉토리로 추출하는 기능을 제공합니다. ZIP 디렉토리에 전체 경로를 제공하지 않으면 현재 드라이브 루트가 사용됩니다. 게임 번들 작업 디렉토리에 상대 경로로 위치시키고 싶다면 working_directory
변수를 경로의 일부로 사용해야 합니다. 상대 경로에서 "."
또는 ".."
를 사용하는 것은 피해야 합니다.
ZIP 파일은 게임 번들의 일부(즉, 포함된 파일)여야 하거나 http_get_file()
을 사용하여 저장소 영역에 다운로드되어야 합니다. 이 함수는 추출된 파일의 수를 나타내는 값을 반환하며, 추출이 실패할 경우 0 이하의 값을 반환합니다. 이 함수는 동기식으로 작동하므로 ZIP 파일을 추출하는 동안 게임이 멈출 수 있습니다. 비동기적으로 추출하려면 zip_unzip_async
를 사용해야 합니다.
함수 문법
zip_unzip(zip_file, target_directory)
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
zip_file | String | 열 ZIP 파일의 경로 |
target_directory | String | 파일을 추출할 대상 디렉토리 경로 |
반환값
- Real: 추출된 파일의 수
- 0 이하: 추출 실패
활용 예제
다음은 zip_unzip
함수를 사용하는 예제 코드입니다.
var num = zip_unzip("/downloads/level_data.zip", working_directory + "extracted/");
if (num <= 0) {
show_debug_message("Extraction Failed!");
}
위 코드는 "downloads" 디렉토리에 저장된 ZIP 파일을 열고, 그 내용을 "extracted" 디렉토리로 추출합니다. 만약 "extracted" 디렉토리가 존재하지 않으면 생성됩니다. 추출이 성공했는지 확인하고, 실패할 경우 디버그 메시지를 표시합니다.
추가 활용 예제
- 다른 ZIP 파일 추출하기
var num = zip_unzip("/downloads/game_assets.zip", working_directory + "assets/");
- 추출 후 파일 목록 확인하기
var num = zip_unzip("/downloads/level_data.zip", working_directory + "extracted/");
if (num > 0) {
var files = file_find_first(working_directory + "extracted/*", fa_all);
while (files != "") {
show_debug_message("Extracted file: " + files);
files = file_find_next();
}
file_find_close();
}
- 비동기 추출 사용하기
zip_unzip_async("/downloads/level_data.zip", working_directory + "extracted/", async_callback);
- 추출 실패 시 대체 경로 사용하기
var num = zip_unzip("/downloads/level_data.zip", working_directory + "backup/");
if (num <= 0) {
num = zip_unzip("/downloads/level_data_backup.zip", working_directory + "backup/");
}
이와 같이 zip_unzip
함수를 활용하여 다양한 방식으로 ZIP 파일을 추출하고, 그 결과를 처리할 수 있습니다.