武装突袭 Wiki
Advertisement
  

点击图片可看到更多讯息

开始使用于

游戏:
Armed Assault
版本:
1.00

描述

描述:
Suspend execution of function or SQF based script until condition is satisfied.
This command will loop and call the code inside {} mostly every frame (depends on complexity of condition and overall engine load) until the code returns true. The execution of the rest of the script therefore will be suspended until waitUntil condition is satisfied and the loop is aborted.
Because of this script suspension use spawn or execVM to safely execute code containing waitUntil.

基本句法

句法:
waitUntil condition
参数:
condition: Code
返回值:
Nothing

范例

范例1:
waitUntil { not alive player };
范例2:
_i = 0; waitUntil { _i = _i + 1; _i >= 100 };
范例3:
waitUntil {sleep 0.1; not alive player };
范例4:
An on-the-fly custom event handler: _myEH = ["ZoomIn"] spawn { while { true } do { waitUntil { inputAction (_this select 0) == 1; }; diag_log format ["%1 @ %2", _this select 0, diag_tickTime]; }; }; Although perhaps better to use onEachFrame, depending on the application.

额外资讯

多人游戏:
-
也可以看看:
sleepuiSleepcanSuspendspawnexecVMwhileControl Structures

注意事项

此处撰写句法皆为可行用法. 可到官网[1]专页回报错误. 你可以使用讨论页面或是论坛来进行讨论.
新增注意事项 | 如何新增?

Notes

Posted on September 20, 2013
Killzone_Kid
In case you have more complex code inside waitUntil loop, to be on the safe side always return boolean at the end of the scope: player addEventHandler ["Fired", { _null = (_this select 6) spawn { _p = [0,0,0]; waitUntil { if (isNull _this) exitWith {true}; _p = getPos _this; false //<-- boolean at the end of the scope }; hint str _p; }; }];
Posted on December 20, 2006 - 19:55
CrashDome
waitUntil suspends both SQF functions and SQF scripts. In functions, the calling script is still in suspension due to waiting for a return from the call command. The game engine will continue, however. See Function for more detail.
Posted on April 2, 2010 - 17:10
Roehre
If WaitUntil uses an undefined call code, WaitUntil won't release, even when this code is separated from other conditions through or. Be warned that this won't cause an error message.
Posted on Jan 07, 2011
kju
By default the cycle time for the condition check is per frame. Look at the example 3, how to set it at a lower rate yourself. Often times one does not need per frame checking. Saves a lot CPU checks; especially when the condition is complex to compute.

Bottom Section

Posted on December 13, 2014 - 23:25 (UTC)
Commy2
If you want to use waitUntil together with exitWith, remember that the loop only exits if the code block returns true.

It should look like this: waitUntil { // exit loop if the unit gets deleted if (isNull _unit) exitWith {true}; // has to return true to continue !alive _unit; };
Advertisement