这取决于,您通常可以return
用来强制提前退出。即使在事件处理程序的情况下,这也可以工作,因为它们基本上只是函数:
rollout test "Test"
(
button btn "Exception"
on btn pressed do
(
if selection.count != 1 do
return messageBox "Selection count expected to be one."
if NOT isKindOf selection[1] Editable_poly do
return messageBox "Object not an Editable Poly."
btn.text = selection[1].name
)
)
createDialog test
由于一些实现细节,如果在循环体或其他可能多次执行的地方使用,它会使整个脚本变慢。
如果您只想退出脚本并仅在侦听器中打印信息,则throw
可能是一个更好的功能。
if selection.count != 1 do
throw "Selection count expected to be one."
if NOT isKindOf selection[1] Editable_poly do
throw "Object not an Editable Poly"
print selection[1].name
但是,在大多数情况下,您当前使用的是最合适的解决方案。如果您想改进它(特别是如果您发现自己一遍又一遍地编写相同的代码),您可以编写一个自定义结构,例如Filters
:
#Struct:Filters(
GetModOrObj:<fn>; Public,
Is_EditSpline:<fn>; Public,
CanSwitchTo_Segment:<fn>; Public,
HasBaseObjectProperty:<fn>; Public,
...
Is_EditPolyMod:<fn>; Public,
Is_This_EditPolyObj:<fn>; Public,
Is_EditPatch:<fn>; Public,
CanSwitchTo_Face:<fn>; Public)