맥스스크립트 심화

RolloutCreator Functions(3)

스크립팅하는애님 2021. 4. 7. 19:22
728x90
반응형

안녕하세요.

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

지지난 시간에 해결 못했던 문제를 오늘 해결하겠습니다.

 

우선 이전과 동일하게 박스 3개를 만들어 보겠습니다. (저는 저장해 놓았기 때문에 불러오겠습니다. ㅎㅎ)

 

 

지난번에 만들었다 실패 한 스크립트의 내용은 아래와 같습니다.

 

1
2
3
4
5
6
7
8
9
10
rollout boxButton_Rollout "Box Button"
(
    totalObj = $* as array
        
    for i = 1 to totalObj.count do
    (
        if(classof totalObj[i] == Box) do button boxButton_btn "박스"
    )
)
createdialog boxButton_Rollout
cs

 

그냥 이대로 실행이 가능했으면 좋았을 텐데요.

위 스크립트의 내용을 머릿속에 기억하고 새로이 스크립트를 짜도록 하겠습니다.

 

우선 동적 UI용 대화 상자를 만들어 보겠습니다.

 

1
2
3
4
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
 
createDialog (rci.end())
cs

 

위 스크립트가 동적 UI용 대화 상자의 가장 기본적인 형태입니다.

이제 3번 라인에 실제 동작에 관한 내용을 적으면 됩니다.

동적 UI용 버튼 UI 생성을 추가하겠습니다.

 

1
2
3
4
5
6
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
 
rci.addControl #button #boxButton_btn "박스"
 
createDialog (rci.end())
cs

 

버튼이 생겼네요.

 

4번 라인이 가장 기본적인 버튼 만들기입니다. (아직 이벤트 핸들러가 없어 작동은 하지 않습니다.)

 

여기에 이전 스크립트 방식과 동일하게 박스의 수를 세고 for문으로 박스를 만들면 되겠네요.

이전 스크립트를 참고하여 생성해 입력해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
 
totalObj = $* as array
for i = 1 to totalObj.count do
(
   rci.addControl #button #boxButton_btn "박스"
)
createDialog (rci.end())
cs

 

어러가 똭!

 

에러가 발생합니다.

이유는 버튼이 2개 이상 만들어지면서 버튼의 변수 명이 동일해서 그런 것 같습니다.

즉 이미 만든 것을 또 만들었다는 것이죠.

변수 이름을 바꿔야겠네요.

여러 가지 방법이 있겠지만 저는 for문의 i값을 가지고 해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
 
totalObj = $* as array
for i = 1 to totalObj.count do
(
    btnName = execute("#boxButton_btn" + (i as string))
    rci.addControl #button btnName "박스"
)
createDialog (rci.end())
cs

 

 

짜잔~~

 

추가된 부분은 이전에부터 쭉 읽어온 분이라면  어떤 내용인지 쉽게 아실 것이라 생각합니다.

간단하게 설명하면 버튼 이름과 for문의 i값 숫자를 문자열로 합친 후 이것을 실행 가능한 형태로 변경한 다음 변수 btnName에 저장을 하고 실제 버튼을 생성할 때 사용합니다.

아직 작동하지 않지만 박수의 수를 늘리거나 줄여도 그것에 반응하여 UI가 생성되는 것을 확인할 수 있을 겁니다.

 

오늘은 여기까지 하고, 실제 버튼과 박스 오브젝트가 연동하는 것은 다음 시간에 이어서 하겠습니다.

728x90
반응형