본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS1][GMS2] 입력 팝업 메시지

by 타락카얀 2018. 4. 24.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

게임상에서 직접 문자나 숫자를 입력하여 적용하고 싶을 때가 있지요. 또한 간단하게 메시지를 띄워

정보를 표시하고 싶을 때가 있을 겁니다.

이번 강좌에서는 그와 같은 팝업 메시지 기능에 대해 알아보도록 합시다.

 

 

 

 


◈ 외부 문자열 입력

 


외부 값 입력에는 get_string_async, 또는 get_integer_async 함수를 사용하여 외부 입력값을 받아,
asynchronous (비동기 이벤트) ▶ Dialogs 이벤트에서 값을 처리하게 됩니다.

문자열 입력은 get_string_async 함수를 사용합니다.

   get_string_async(string,defaut)
      string : 메시지에 표시할 문장
      defaut : 메시지 입력란에 지정할 기본값

 


(▲ 문자열 입력)


문자열 입력을 하기 위해서 먼저 입력을 받을 변수를 선언해주고,

 



★ Create 이벤트

message_str=-1;

 


별도의 입력이 필요한 이벤트에서 get_string_async 함수를 실행합니다.

 



★ 입력이 필요한 특정 이벤트

message_str= get_string_async("당신의 이름은 무엇인가요?","Anon");

 


그리고 값을 처리할 asynchronous (비동기 이벤트) ▶ Dialogs 이벤트를 추가하고,

 



★ Dialogs 이벤트

var i_d;

i_d = ds_map_find_value(async_load, "id");
 if i_d == message_str
    {
    if ds_map_find_value(async_load, "status") //메시지창의 [확인]을 누르면 true
       {
       if !(ds_map_find_value(async_load, "result") = "")
          {

          //----------------------------- 처리 내용 -----------------------------
          global.Name = ds_map_find_value(async_load, "result");

          //----------------------------- 처리 내용 -----------------------------
          }
       }
    }

 


이와 같이 값을 처리하면 됩니다.

   id : 호출 id
   status : 상태, true=[확인]
   result : 입력 결과(문자열)


 

 

 

 


◈ 외부 숫자 입력

 


숫자 입력은 get_integer_async 함수를 사용합니다.

   get_integer_async(string,defaut)
      string : 메시지에 표시할 문장
      defaut : 메시지 입력란에 지정할 기본값


(▲ 숫자 입력)


먼저 입력을 받을 변수를 선언해주고,

 



★ Create 이벤트

message_real=-1;

 


별도의 입력이 필요한 이벤트에서 get_integer_async 함수를 실행합니다.

 



★ 입력이 필요한 특정 이벤트

message_real= get_integer_async("당신의 나이는 어떻게 되나요?", 0);

 

 

그리고 값을 처리할 asynchronous (비동기 이벤트) ▶ Dialogs 이벤트를 추가하고,

 



★ Dialogs 이벤트

var i_d;

i_d = ds_map_find_value(async_load, "id");
 if i_d == message_real
    {
    if ds_map_find_value(async_load, "status") //메시지창의 [확인]을 누르면 true
       {

       //----------------------------- 처리 내용 -----------------------------
       global.Age = ds_map_find_value(async_load, "value");

       //----------------------------- 처리 내용 -----------------------------
       }
    }

 

 

이와 같이 값을 처리하면 됩니다.
   id : 호출 id
   status : 상태, true=[확인]
   value : 입력 결과




 


◈ 메시지창 표시

 


메시지창은 show_message_async 함수를 사용합니다.

   show_message_async(string)
      string : 메시지에 표시할 문장


(▲ 메시지창)


먼저 메시지 입력을 받을 변수를 선언해주고,

 



★ Create 이벤트

message = -1;

 


메시지를 표시할 이벤트에서 show_message_async 함수를 실행합니다.

 



★ 메시지를 표시하고 싶은 특정 이벤트

message = show_message_async("게임을 종료합니다.");

 


그리고 메시지를 처리할 asynchronous (비동기 이벤트) ▶ Dialogs 이벤트를 추가하고,

 



★ Dialogs 이벤트

var i_d;
 i_d = ds_map_find_value(async_load, "id");
 if i_d == message
    {
    if ds_map_find_value(async_load, "status")
       {

       //----------------------------- 처리 내용 -----------------------------
       game_end( );

       //----------------------------- 처리 내용 -----------------------------
       }
    }

 


이와 같이 이벤트를 처리하면 됩니다.
   id : 호출 id
   status : 상태, true=[확인]

 




◈ 질문 메시지 표시

 


질문 메시지는 show_question_async 함수를 사용합니다.

   show_question_async(string)
      string : 메시지에 표시할 문장

 


(▲ 질문 메시지)


먼저 메시지 입력을 받을 변수를 선언해주고,

 



★ Create 이벤트

message = -1;

 


질문 메시지를 표시할 이벤트에서 show_question_async 함수를 실행합니다.

 



★ 메시지를 표시하고 싶은 특정 이벤트

message = show_question_async("현재 아이템은 100 골드입니다. 구매하시겠습니까?");

 


그리고 메시지를 처리할 asynchronous (비동기 이벤트) ▶ Dialogs 이벤트를 추가하고,

 



★ Dialogs 이벤트

var i_d;
 i_d = ds_map_find_value(async_load, "id");
 if i_d == message
    {
    if ds_map_find_value(async_load, "status") //[Yes]버튼을 눌렀을 때
       {

       //----------------------------- 처리 내용 -----------------------------
       global.gold -= 100;
       global.item_A+=1;

       //----------------------------- 처리 내용 -----------------------------
       }
    }

 

 

이와 같이 값을 처리하면 됩니다.
   id : 호출 id
   status : 상태, [Yes]=true, [No]=false

300x250

댓글