맥스스크립트 기초

함수(1)

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

안녕하세요.

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

지난번에 UI이야기 중에 함수에 대해서 이야기가 나왔는데요.

맥스 스크립트에서 함수의 사용 방법은 정확하게 이야기한 적이 없습니다.

그래서, 오늘은 맥스의 함수에 대해 이야기해 볼까 합니다.

 

함수는 어떤 값을 입력 받아 그 값을 가공하여 반환하는 것을 말합니다.

알쏭달쏭하게 설명이 됐는데 예를 하나 들어 보겠습니다.

햄버거 가게에서 돈과 함께 원하는 햄버거를 주문하면 가게의 주방에서 내용에 맞춰 햄버거를 만들어 줍니다.

여기서 '돈과 주문'이 '입력 값'이고 '햄버거를 만드는 과정'이 가공이며, '햄버거'가 '반환'입니다.

스크립트를 작업하면 대부분이 '값을 입력하고 공정하고 출력하는'과정입니다.

그런데 함수를 따로 구분지어서 만들어야 하는 이유가 있을까요?

필요가 없으면 함수라는 개념이 생기지 않았겠죠. ㅎㅎㅎ

스크립트 내에 같은 작업에 반복적으로 사용된다면 매우 효과 적입니다.

예를 들어 붕어빵 만들기를 생각해 봅시다.

옛날에는 팥 붕어빵만 있었지만 지금은 크림이나, 초콜릿 같이 여러 종류의 붕어빵이 있습니다.

그렇다고 붕어빵의 종류에 따라 붕어빵 틀을 따로 사용하지는 않죠.

붕어빵 틀에 들어가는 재료에 따라 붕어빵이 달라지는 것이니까요.

같은 동작을 하는 것이라면 각각의 입력값마다 동작 구문을 넣는 것이 아니라,

따로 함수로 정의하여 필요에 따라 불러서 쓰면 되는 것입니다.

불러야 할 곳이 늘어나면 늘어날수록 효과는 더욱 커집니다.

 

 

문법

 

[mapped] ( function | fn) <name> { <parameter> } = <expr>

함수를 사용할 때는 아예 function이나 줄여서 fn이라고 선언한 뒤 사용합니다.

그다음에는 함수의 이름이 오고,

필요에 따라 외부에서 입력되는 값인 parameter(인자)가 입력됩니다.

그리고 '=' 표시를 한 다음에 함수의 실제 내용이 입력됩니다.

외부 입력값인 parameter는 없을 수도 있고 여러 개 일 수 도 있습니다.

또한 맥스에서 변수에 저장될 수 있는 것이라면 어떤 형태든 가능합니다.

이 모든 것이 다 작성이 되면 함수가 정의된 것인데 이것은 말 그대로 '이 함수는 이렇게 동작한다.'라고 정의한 것이기 때문에 실제로 작동하지는 않습니다.

스크립트의 본문에서 불러와야(호출) 실제로 실행이 됩니다.

 

함수를 이용하여 자동으로 format문으로 출력하는 스크립트를 만들어 보겠습니다.

다음과 같이 작성하고 실행해 봅시다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
myNum = 1
myStr = ""
 
fn format_fn inpData =
(
    addStr = inpData + "입니다."
)
 
case myNum of 
(
    1: myStr = "1"
    2: myStr = "2"
    3: myStr = "3"
    4: myStr = "4"    
)
 
format "%\n" (format_fn  myStr)
cs

 

 

'1입니다.'라는 결과가 출력 됐습니다.

 

작동원리에 대해서 이야기하겠습니다.

라인 1, 2번 - 우선 myNum에는 1을 넣고 myStr은 문자열로 만든 후 아무것도 넣지 않았습니다.

라인 4 ~ 7번 - fn을 써서 format_fn이라는 이름을 가진 함수를 정의합니다.

patameter(인자)로 inpData라는 것을 갖습니다.(이것으로 하나의 값이 외부에서 들어오는 것을 알 수 있습니다.)

함수의 내용은 addStr에 patameter값인 inpData와 문자열인 "입니다."를 합칩니다.

(이걸 보면 'inpData'는 문자열인 것을 알 수 있습니다. 그렇기 때문에 합쳐진 후 저장하는 변수인 addStr도 문자열입니다.)

라인 9 ~ 15번 - 별다른 건 없고 myNum값에 따라 myStr에 값이 입력됩니다.

라인 17번 - format문으로 MAXScript Listener에 출력을 합니다.

여기서 출력하는 것이 함수입니다.

함수명 format_fn을 사용하여 정의한 함수를 사용하게 됩니다.

인자 'inpData'는 'myStr'의 값을 받아옵니다.

함수 내부의 작업 과정을 통해 결과 값이 format문에 들어가게 됩니다.

맥스 스크립트에서는 return(반환) 문을 사용하지 않아도 함수를 호출한 문장에서 return값을 받을 수 있게 되어 있으면 값을 자동으로 넘겨줍니다.

 

 

그림으로 보면 1에 의해 정의된 함수가 실행되며 2에 의해 인자 값을 함수에서 받아 오며, 함수가 다 실행되면 그 값이 return(반환)되어 format문에 사용이 됩니다.

 

함수는 내용이 길기 때문에 오늘은 여기까지 이야기를 하고 다음에 계속 함수에 대해서 이야기하겠습니다.

728x90
반응형

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

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