线程计划程序

Time:5 分钟

Roblox 使用线程计划程序以允许多个脚本并行执行。你可以利用此功能,在同一脚本中并行运行两段代码。Roblox 的线程计划程序可通过 spawnwaitdelay 函数体现。

在本文的剩余部分,“任务”一词用于表示由线程计划程序管理的协同程序。

列队任务

有两种方法可以将任务列队至线程计划程序中:

任务切换

Roblox 运行 wait 函数(或任何其他 YieldFunction)时,会暂停当前任务,使其列队等待稍后处理,然后查找其他等待任务(即另一个脚本或事件处理程序),并恢复下一个最重要的任务。没有其他方法可用于切换任务 - 如果你已使用 Spawn 使任务列队,则必须使用 wait() 才能使其运行:

此外,当列队任务终止时,可运行新任务 - 无需使用上述代码中的 wait():

ypcall

ypcall 可将任务列队,然后暂停当前任务,直到列队任务完成或出现错误

实施详情

以下代码显示了以 lua 编写的 Roblox 线程计划程序,其行为(看上去)与内置程序相同:

此代码不含:

  • wait 行为类似的基本 coroutine.yield()

  • pcall

另请参阅

  • Articles/Beginners Guide to Coroutines - 由线程计划程序在内部使用

***Roblox官方链接:线程计划程序