2016-09-29 3 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 

Но даже с ut, вы можете назначить узел переменной, доступной в пределах области:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^