GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] 파일 열기와 파일 저장 함수

타락카얀 2024. 3. 19. 10:47
728x90

 

 

GAME MAKER 강좌

 

KAYAN

 

 

 

 

 

 

◈ 파일 열기

 

파일 열기는 아래 함수를 사용합니다.


   ◎ get_open_filename(filter,fname)

 

필터(filter) 인자는 파일을 열때, 어떤 파일 확장자를 지원할 것인지를 지정하고,

파일명(fname)은 기본 파일명을 지정합니다.

즉, 파일 열기의 입력창에 기본으로 정해주는 문자열입니다.

파일 입력창을 비워두려면 빈 문자열을 지정하면 됩니다.

 

(▲ 파일열기 )

 

※ [참고] : 이 함수를 사용하려면 게임옵션(Game Option) ▶ Platform Settings ▶ Windows ▶ General ▶ Disable file system sandbox 을 체크해야 합니다.

※ [참고] : 이 함수는 Windows 와 macOS 에서만 작동합니다.

(▲ Disable file system sandbox 체크)

 

필터 설정은 아래와 같이 문자열로 설정합니다.

 


   "파일 형식|파일 확장자"

 

지원하는 파일 명칭과 확장자 사이에 기호 "|" 로 구분시키면 됩니다.

예를 들어, 텍스트 파일을 *.txt 파일을 지원한다면, 아래와 같이 설정하면 됩니다.

 

 
  "텍스트 파일|*.txt;"


 

두개 이상의 확장자를 지원시키고자 할 때는 아래와 같이, 원하는 확장자를 추가해주기만 하면 됩니다.


   "텍스트 파일|*.txt;*.ini;"

 

(▲ 파일열기- 필터의 확장자를 가진 파일만 정렬)

 

두개 이상의 확장자를 구분하여 지원하려면 아래와 같이 기호 "|"로 구분시키고 파일 형식과 확장자를 추가하면 됩니다.


   "파일 형식1|파일 확장자1|파일 형식2|파일 확장자2 ..."

 

예)


   "텍스트 파일|*.txt;|ini 파일|*.ini;"

 

(▲ 파일열기 - 파일 형식을 별도로 구분)

 

이 함수는 파일 열기가 성공하면 파일명과 함께 파일경로가 반환되며, 실패(또는, 취소)하면 빈 문자열이 반환됩니다.

예)


   var fname,_fn;
   fname=get_open_filename("텍스트 파일|*.txt;","");
   
   if file_exists(fname){
   _fn=file_text_open_read(fname);
   text_test=file_text_read_string("파일열기를 테스트합니다.");
   file_text_close(_fn);
   }


 

 

 

 

 

◈ 파일 저장

 

 

파일 저장은 아래의 함수를 사용합니다.


   ◎ get_save_filename(filter,fname)

 

파일 열기와 마찬가지로 지원할 파일형식에 관련된 필터 설정과 파일명을 지정해주면 됩니다.

 

(▲ 파일 저장)

 

 

※ [참고] : 이 함수를 사용하려면 게임옵션(Game Option) ▶ Platform Settings ▶ Windows ▶ General ▶ Disable file system sandbox 을 체크해야 합니다.

※ [참고] : 이 함수는 Windows 와 macOS 에서만 작동합니다.

 

 

이 함수는 파일 저장을 성공하면 파일명과 함께 파일경로가 반환되며, 실패(또는, 취소)하면 빈 문자열이 반환됩니다.

 

예)


   var fname,_fn;
   fname=get_save_filename("텍스트 파일|*.txt;","제목없음.txt");
   
   if !(fname==""){
   _fn=file_text_open_write(fname);
   file_text_write_string(_fn,"파일 저장을 테스트합니다.");
   file_text_close(_fn);
   }


 

함수로 저장할 때, 확장자를 자동으로 붙여주지 않으므로, 파일 저장 이벤트에서 파일명에 확장자를 미리 붙여주는 것이 좋습니다.

예)


   var fname,_fn;
   fname=get_save_filename("텍스트 파일|*.txt;","");
   
   if !(fname==""){
   var _ext= !(filename_ext(string_lower(fname))==".txt") ? ".txt" : "";//확장자가 .txt 가 아니면 파일명에 .txt를 붙여줌
   
   _fn=file_text_open_write(fname+_ext);//파일명에 확장자를 붙여줌.


   file_text_write_string(_fn,"파일 저장을 테스트합니다.");
   file_text_close(_fn);
   }


 

이와 같이 하면 입력창에 굳이 확장자를 붙이지 않아도 확장자를 자동으로 붙여 저장할 수 있습니다.

 

 

 

※ [참고] : 경로에 기호 '\'를 단독으로 사용할 경우 문자열 명령어로 인식해서 경로를 제대로 인식 못할 수 있습니다.

※ 그럴 때는 아래와 같이 문자열을 @기호로 처리하거나, '\'를 2개 사용(\\, 기호 '\'를 표시하는 명령어)하면 됩니다.


    fname = @"image\player_5.png";

   또는,

   fname = "image\\player_5.png";


 

 

 

 

 

 

 

 

 

 

300x250