随着用户界面脚本变得愈加复杂,因此可能会产生语法错误。如果用户界面脚本部分执行并在遇到某个错误时停止,那么该窗口仍存在,但不可见。如果修复该问题并希望再次执行脚本,那么必须赋予窗口一个新名称,或者删除隐藏的窗口。
在下一节中,将使用条件语句来解决窗口命名冲突。使用条件语句可以根据某个变量的值或场景中某个对象的状态执行一段代码。
window testwindow; fake_command; showWindow;
会将一个错误输出到“脚本编辑器”(Script Editor)。
window testwindow; showWindow;
会将一个错误输出到“脚本编辑器”(Script Editor)。
// Error: line 1: Object's name is not unique: testwindow //
deleteUI testwindow;
window -exists testwindow;
deleteUI non_existing_window; sphere;
会将一个错误输出到“脚本编辑器”(Script Editor)。
为了能够仅在现有用户界面存在时删除该界面,可以使用条件语句。
window testwindow; fake_command; showWindow;
if (`window -exists testwindow`==1) { deleteUI testwindow; } window -resizeToFitChildren 1 testwindow;
columnLayout; text -label "This window deleted the other one"; showWindow;
如果要引用用户界面中的某个控件,该控件必须有一个名称。可以使命令生成唯一的默认名称,然后可以将该名称存储为变量,而不必手动指定每个用户界面元素的名称。
所有用户界面命令都会返回其创建时的完整名称和路径。可以将返回值存储为一个变量,以引用在脚本中某个稍后的点处的控件。
window -resizeToFitChildren 1 pick_me_window; columnLayout; $button_one=`button -label "Click Me!"
-command "deleteUI $button_two"`; $button_two=`button -label "NO!, Click Me!!" -command "deleteUI
$button_one"`; $button_close=`button -label "Close" -command "deleteUI pick_me_window"`; showWindow;
此处将再次使用反引号进行求值,尽管在这种情况下,将创建三个变量($button_one、$button_two 和 $button_close),这三个变量包含每次调用按钮命令的结果。
单击其中一个“单击我!”按钮会通过以下方式删除其他按钮:使用将按钮控件的名称存储为参数(button_one 或 button_two)的变量调用 deleteUI 命令。
创建了用户界面窗口之后,可以手动为该窗口指定一个唯一的名称。这是一个很好的做法,可确保无法打开用户界面的多个副本。对于更复杂的用户界面,同一用户界面的多个副本会相互干扰,或者会降低 Maya 的速度。