2016-09-29 130 views
0

如何將變量從一個範圍傳遞給另一個範圍?我不能預先聲明它,因爲只有在用戶選擇對象時才定義對象。實際上,這段代碼失敗了,因爲它試圖讀取另一個作用域中定義的局部變量。maxscript中的範圍變量

在僞代碼:

1.pick對象 2.複印所選對象

和實際代碼:

macroScript Variables 
category:"Stackoverflow" 
toolTip:"" 

(

rollout Roll "Scopes" 
(
pickbutton pickobj "Pick object" 
on pickobj picked objectPicked do if isValidNode objectPicked do pickobj.tooltip = "You picked " + objectPicked.name 

button pass "Pass the variable" 
on pass pressed do (

newObj = copy objectPicked 
print newObj 

) 
) 
createDialog Roll 300 80 

) 

回答

2

在這種情況下,這是非常簡單的,你可以訪問PickButton的對象屬性:

rollout Roll "Scopes" 
(
    pickButton pickObj "Pick object" autoDisplay:true 
    button pass "Pass the variable" 

    on pickObj picked objectPicked do 
     if isValidNode objectPicked do 
      pickobj.tooltip = "You picked " + objectPicked.name 

    on pass pressed do 
    (
     local newObj = copy pickobj.object 
     print newObj 
    ) 
) 
createDialog Roll 300 80 

但即使沒有您可以將節點分配給可訪問範圍內的變量:

rollout Roll "Scopes" 
(
    local pickedObj 

    pickbutton pickobj "Pick object" autoDisplay:true 
    button pass "Pass the variable" 

    on pickobj picked objectPicked do 
     if isValidNode objectPicked do 
     (
      pickedObj = objectPicked 
      pickobj.tooltip = "You picked " + objectPicked.name 
     ) 

    on pass pressed do 
    (
     local newObj = copy pickedObj 
     print newObj 
    ) 
) 
createDialog Roll 300 80