본문 바로가기
GameMaker강좌[GMS2]/DnD(드래그앤드롭)기초

[게임메이커 강좌-기초][GMS2] 코드 실행 액션

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

 

 

GAME MAKER 강좌

 

 

KAYAN


 

 

 

◈ 코드 실행 액션

 


스튜디오2에서는 GML 코드나 스크립트를 호출하여 실행할 수 있는 여러가지 액션이 있습니다.

이번 강좌에서는 GML코드를 실행할 수 있는 액션들에 대해 알아보도록 합시다.

 


(▲ Common 탭)

 

먼저 Execute Code 액션은 일반적인 GML 코딩을 할 수 있는 액션입니다.

 


(▲ Execute Code 액션. GML 코딩 전용 액션.)

 

액션은 제한적인 기능만 제공하기 때문에, 이벤트를 구현하기 힘든 경우가 있지요.

그래서 이벤트를 보다 구체적이고 세분화하여 이벤트를 구성하고자 할 때, 이 액션을 사용합니다.

코딩은 GML 언어를 사용합니다.

이 액션은 코딩만을 위한 액션이지만, 다른 액션들을 추가로 덧 붙일 수도 있습니다.

Execute Script 액션은 스크립트를 실행할 수 있는 액션입니다.

 


(▲ Execute Script 액션. 스크립트를 호출.)


스크립트에 사용하는 인자(Argument)가 더 필요한 경우 왼쪽 [+]을 누르면 추가할 수 있습니다.

   Script : 스크립트 명
   Argument : 스크립트에 사용할 수 있는 인자. 인자가 왼쪽 [+]을 눌러 입력란 추가
   Target : 스크립트를 통해 반환된 값을 저장할 수 있는 변수



Function Call 액션은 게임메이커의 GML 함수를 호출할 수 있는 액션입니다.

 

 

(▲ Function Call 액션을 사용해 충돌 이벤트를 구성할 수 있음)


함수에 사용하는 인자(Argument)가 더 필요한 경우 왼쪽 [+]을 누르면 추가할 수 있습니다.

   Function : 함수 명
   Argument : 함수에 사용할 수 있는 인자. 인자가 왼쪽 [+]을 눌러 입력란 추가
   Target : 함수를 통해 반환된 값을 저장할 수 있는 변수

Return 액션은 스크립트내에서 값을 반환하는 액션입니다.
예를 들어, 아래와 같은 이벤트가 있다면,

 

 

(▲ Return 액션. 스크립트 내에서 사용하며, 스크립트 외부에 값을 반환 시키는 역할을 함.)

 

 

이것은 현재 오브젝트가 obj_enemy와 충돌 했을 때, 상대 인스턴스 id를 스크립트 값으로 반환하게 됩니다.

Exit 액션은 이벤트를 즉시 끝내고 싶을 때 사용할 수 있는 액션입니다.

 


(▲ Exit 액션)


이 액션을 사용하면 액션이 사용된 이벤트 부분에서 즉시 끝내고, 이후 이벤트 내용은 실행 중지시킵니다.
예를 들어, 아래와 같이 한다면,

 


(▲ Exit 액션 사용)


score가 500과 같거나 클 때 이벤트를 끝내고, Exit 액션 아래의 이벤트는 실행하지 않게 되는 것입니다.

 

 

 




◈그 외 기능

 


Macro 액션은 반복되는 수식따위의 블록들이나 지정된 상수 값을 간단하게 명칭으로 대체하여 간소화할

수 있는 기능입니다.
예를 들어, 체력 게이지를 계산할 때  (hp/hp_max)*width 와 같은 수식이 있다면, 이 수식을 gauge로

매크로로 명칭하여 수식을 대신하여 사용할 수 있다는 것이지요(물론 hp, hp_max, width 변수가 있어야 함).

일단, 도움말에 의하면 Macro 액션의 사용법은 아래와 같은데,

 


(▲ Macro 액션)


이와 같이 하면 매크로로 등록 못하는 오류가 발생해서, 아래처럼 작성해야 정상 작동합니다.

   macro : 매크로이름
   value : 매크로이름+값 (예. mac01 1234 ▶ 매크로:[mac01] 값:[1234])

 


(▲ Macro 액션 수정)


이와 같다면, c_light_blue는 $aaaaff, c_mint 는 $b4ffaa, c_light_pink 는 $ffaaaa 를 대체하여 사용할 수

있는 것입니다.

 

이미 정의된 매크로의 값은 직접적으로 변경할 수 없습니다만, 수식에 변수가 사용되었을 때는 변수 값을

변경하여 매크로에 적용할 수 있습니다.
예를 들어 수식 b+c+d 를 매크로 aaa 로 정의할 때, aaa 를 직접적으로 변경할 수는 없지만, 수식에 사용된

b, c, d 의 값은 수시로 변경하여 매크로에 반영 가능합니다(단, b, c, d가 변수로써 먼저 정의되어 있어야 함).

그리고 매크로 aaa 를 호출하면 변경된 값이 적용되는 것이지요.

예를 들어, 아래와 같이 한다면,

 


(▲ 변수 test 값은 b+c+d = 35 )


aaa 가 b+c+d 이므로 test 값은 35가 적용이 됩니다.

만약, 이후에 b 나 c, 또는 d 값을 변경하면, aaa 에 변경된 값이 반영되어 적용되는 방식입니다.

 

코드로는 [#macro+변수명+수식 또는 값]으로 매크로를 정의할 수 있습니다.

 

 

//값을 합산하거나, 다른 수식을 간단하게 처리할 수도 있음

 

#macro aaa b+c+d


var b,c,d,it;
b=5;
c=6;
d=20;

it=aaa; //aaa 는 5+6+20=31

 

 

 

//체력과 같은 게이지를 표시할 경우, 수식을 gauge로 명칭하여 사용

 

#macro  gauge (hp/hp_max)*width


var width;
width=240;
draw_rectangle_color(10-2,16-2,10+width+2,16+8+2,c_black,c_black,c_black,c_black,0);
draw_rectangle_color(10,16,10+gauge,16+8,c_red,c_red,c_red,c_red,0);

width=320;
draw_rectangle_color(10-2,30-2,10+width+2,30+8+2,c_black,c_black,c_black,c_black,0);
draw_rectangle_color(10,30,10+gauge,30+8,c_red,c_red,c_red,c_red,0);

 

 

 

//랜덤 색 적용

 

#macro col make_colour_hsv(irandom(255), 255, 255)


image_blend = col;

 



Apply to 액션은 오브젝트나 인스턴스에서 특정 액션이나 이벤트를 실행할 때 사용하는 기능입니다.
참고로 이 액션은 코드의 with문과 같습니다.

   with(object){ 실행내용 }

 


(▲ Apply to 액션)


아래와 같이 [▼] 버튼을 누르면 적용 대상을 지정할 수 있습니다.

참고로 자신 이외에 오브젝트를 지정하면, 룸 내에 있는 그 오브젝트의 모든 인스턴스에 동일하게 적용됩니다.

 


(▲ 적용 대상 지정)

 

그리고 Apply To 액션 뒤에 해당 오브젝트에서 실행할 이벤트를 추가하면 됩니다.

 


(▲ Apply to 액션)

 

예를 들어, Score 가 500 이상일 때, 플레이어 오브젝트의 스프라이트 이미지를 변경한다면,

 

 

(▲ Apply to 사용)

 

이와 같이 할 수 있습니다.

 

 

 

 

 

 

 

 

 

300x250

댓글