비동기 ZIP 압축 해제 함수 설명
zip_unzip_async
함수는 zip_unzip
의 비동기 버전입니다. 이 함수는 ZIP 파일의 경로와 파일이 추출될 대상 디렉토리를 인자로 받습니다. 호출이 성공하면 요청 ID가 반환되며, 이후 AsyncSave / Load 이벤트가 발생하여 이 ID를 확인할 수 있습니다. 이 이벤트의 async_load
맵에는 다음과 같은 키가 포함됩니다:
키 | 설명 |
---|---|
"id" | 원래 함수 호출에서 반환된 요청 ID |
"status" | 0: ZIP 파일이 성공적으로 추출됨, -1: 실패 |
이 함수는 buffer_async_group_begin
과 buffer_async_group_end
호출 사이에서 호출되면 치명적인 오류를 발생시킵니다. 파일 시스템 제한 사항에 대한 자세한 내용은 zip_unzip
문서를 참조하세요.
문법
zip_unzip_async(zip_file, target_directory);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
zip_file | String | 열고자 하는 ZIP 파일의 경로 |
target_directory | String | 파일이 추출될 대상 디렉토리 |
반환값
- Real: 요청 ID
예제
다음은 ZIP 파일을 작업 디렉토리에 추출하는 코드 예제입니다.
level_data_request = zip_unzip_async("/downloads/level_data.zip", working_directory + "extracted/");
비동기 저장/로드 이벤트에서 요청의 상태를 확인하는 코드입니다.
var _id = async_load[? "id"];
if (_id == level_data_request) {
var _status = async_load[? "status"];
if (_status < 0) {
show_debug_message("ZIP 파일 압축 해제 실패.");
}
}
위 코드는 ZIP 파일을 작업 디렉토리에 추출하려고 시도하며, 비동기 저장/로드 이벤트에서 요청의 상태를 확인하고 실패할 경우 출력 로그에 메시지를 출력합니다.
활용 예제
- 게임 데이터 로딩: 게임의 레벨 데이터를 ZIP 파일로 압축하여 로드할 수 있습니다.
gml level_data_request = zip_unzip_async("/downloads/level_data.zip", working_directory + "levels/");
- 리소스 관리: 게임의 이미지, 사운드 파일 등을 ZIP 파일로 압축하여 관리하고, 필요할 때 비동기로 추출할 수 있습니다.
gml resource_request = zip_unzip_async("/downloads/resources.zip", working_directory + "resources/");
- 업데이트 시스템: 게임 업데이트 파일을 ZIP 형식으로 제공하고, 사용자가 다운로드 후 비동기로 압축을 해제하여 최신 버전으로 업데이트할 수 있습니다.
gml update_request = zip_unzip_async("/downloads/update.zip", working_directory + "update/");
- 백업 및 복원: 사용자의 게임 데이터를 ZIP 파일로 백업하고, 필요할 때 비동기로 복원할 수 있습니다.
gml backup_request = zip_unzip_async("/downloads/backup.zip", working_directory + "backup/");
- 파일 관리 도구: 사용자가 선택한 ZIP 파일을 비동기로 해제하여 파일 관리 도구를 만들 수 있습니다.
gml user_file_request = zip_unzip_async(selected_zip_file, working_directory + "user_files/");
이와 같은 다양한 활용 예제를 통해 zip_unzip_async
함수를 효과적으로 사용할 수 있습니다.