這取決於,您通常可以使用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)
即僅適用循環內(它並不適用於所提供的示例OP)。 – Swordslayer
@Swordslayer是真的,它只適用於for和while循環,我很快就讀過這篇文章,並且有一個印象,就是他發佈了一小段代碼,它放在一些循環中!我的錯! :) –