经过数月的功能迭代,在Roblox社区的帮助下,我们怀着激动的心情宣布, Parallel Luau功能已经全面开放。该功能能让开发人员将其游戏体验分解为逻辑行动者集(Logical Set of Actors)。此前,这个功能首先作为 开发者预览版发布,然后作为 工作室测试版发布。
如果您想率先体验Parallel Luau,您可以从阅读 这篇文章开始。除了这一个小教程之外,API文档现在还包含每个方法和属性的标记。
从今天开始,修改实例的所有方法都会标记为不安全,并且所有属性都不会被标记为可安全并行写入的属性。随着我们不断改进Roblox引擎,我们希望能够慢慢地使更多的API方法实现线程安全。
我们还在探索更多专门针对并行执行的API,以便更容易地转换现有游戏体验,利用行动者(Actor)并引入新方法实现行动者(Actor)之间的数据通信。请放心,目前这个版本只是发布的第一版。我们将不断努力提高并行脚本执行的效率和操作简易性。
大家在测试阶段都创造了令人欣喜的内容,我们迫不及待地想看到这些创造最终呈现为逼真的游戏体验。
自测试版以来的主要更新 :
-
调用同步和去同步的脚本可以在同一帧内改变状态。详见下面的章节。
-
目前调试器已经可以在并行和串行情形下在行动者(Actor)的脚本中运行。
-
并行将不再支持require()。这需要您在串行情形下首先要使用的脚本。
-
RaycastParams和RaycastResult对象的某些属性已被标记为不安全。我们希望今后逐渐放松这个限制。
同一帧内多次同步/去同步
之前的一些示例显示了这方面的运行代码效果:
while true do
task.desynchronize()
dowork()
task.synchronize()
End
…每帧都会运行,导致每帧多次调用dowork()函数,因为并行和串行之间的状态转换不需要引擎处理下一帧。可以使用task.wait()函数代替task.synchronize()来等待一帧。
每帧的转换次数仍然会受到限制,因此使用旧模式的代码虽然不会使游戏崩溃,但可能会导致游戏效率低下,而且游戏也不能呈现您想要的效果。