맥스스크립트 기초

함수(2)

스크립팅하는애님 2019. 8. 12. 16:23
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

지난번에 이어 오늘도 함수에 대해서 이야기해보겠습니다.

 

지난번에 예제로 사용했던 함수는 rturn문을 생략하고 사용해도 된다고 이야기했습니다.

하지만 꼭 리턴 문을 써야 할 경우도 있습니다.

함수를 꼭 다 실행하지 않고 특정 결과가 나왔을 때 함수를 멈추고 값을 넘겨줘야 하는 경우가 그런 경우입니다.

보드게임에서 주사위의 숫자가 6이 나올 때만 살고 나머지는 죽는다면 다음과 같이 해볼 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rollout Dice_Roll "Test!"
(
    fn DoA_fn num =
    (
        if(num == 6do return true
        return false
    )
        
    button test_btn "주사위"
    
    on test_btn pressed do
    (
        radNum = random 1 6
        fnResult = DoA_fn radNum
        
        if(fnResult == truethen format "성공!!\n"
        else format "실패\n"
        
    )
)
createdialog Dice_Roll
cs

 

 

위 이미지와 같이 실행이 됐다면 버튼을 여러 번 눌러봅시다.

 

두번째 줄의 'true'는 다이얼로그가 정상 실행 됐다는 의미 입니다.

 

그럼 작동 원리를 확인해 보겠습니다.

rollout Dice_Roll "Test!"를 사용해서 Dice_Roll이라는 다이얼로그를 정의했습니다. 제목은 Test!입니다.

 

다음으로 함수 DoA_fn을 정의합니다. 받는 parameter는 num 하나만 있습니다.

함수의 내용은 만약 num이 6일 때는 true를 return 합니다.

그다음으로는 false를 return 합니다.

 

UI인 버튼 test_btn을 정의했습니다. 버튼 위에 '주사위'라고 적도록 합니다.

 

버튼의 이벤트인 'on ~ pressed ~ do ~'를 사용하여 버튼이 눌릴 때 발생하는 동작을 정의합니다.

random을 이용하여 1부터 6까지의 값을 임의로 가려 와 radum에 저장합니다.

DoA_fn을 불러와 실행을 합니다. 이때 입력 parameter는 radum값입니다. 그리고 그 결과(return)를 fnResult에 저장합니다.

if문을 사용하여 fnResult값에 따라 결과를 출력시킵니다.

 

사실 지금 설명해야 할 것은 함수에서 result를 사용하는 경우가 언제인가 인데 사설이 길었습니다.

 

if(num == 6) do return true
return false

위 두문장은 if then ~ else와 같이 하나로 묶여 있는 것이 아닙니다.

내용상 묶어도 상관없기는 하지만 이해를 돕기 위해 개별적으로 실행되는 형식을 취했습니다.

즉 num값이 6이 아니면 함수의 다음 줄인 return false가 실행되는 것입니다.

반대로 num값이 6이면 함수의 다음 내용은 실행하지 않고 리턴 값을 넘기고 함수를 마칩니다.(함수의 끝까지 가지 않습니다.)

 

이렇게 맥스 스크립트의 함수는 return문을 사용하여 함수를 중간에 끝낼 수도 있습니다.

오늘도 함수에 대해 이야기를 나누었습니다.

다이얼로그나 UI에 대해 더 자세히 알고 싶으신 분은 '기본'과정을 보시면 도움이 될 겁니다.

다음 시간에도 함수에 대한 이야기를 계속하도록 하겠습니다.

728x90
반응형

'맥스스크립트 기초' 카테고리의 다른 글

문자열(String) 함수(1)  (0) 2019.08.31
맥스 스크립트의 유형(2), 사용자 스크립트 위치  (0) 2019.08.20
맥스 스크립트의 유형(1)  (0) 2019.08.19
함수(3)  (3) 2019.08.13
함수(1)  (3) 2019.08.11
Color Values  (0) 2019.08.02
오브젝트의 옵션  (0) 2019.07.18
오브젝트의 Transform (4)  (0) 2019.07.17