各位开发者:
大家好!我们很高兴地宣布上线一个新功能,运行环境,这个功能将作为工作室测试版的一部分供大家试用。
什么是运行环境?
运行环境是脚本的一个属性,它可以让您控制脚本在体验中运行的位置。在上线时这个功能会有以下选项,我们可能会在未来逐步进行扩展:
-
旧版-脚本将在成为特定容器父级时运行。这与你们许多人当前习惯的行为相同,也是此属性的默认行为。
-
服务器-脚本将在任何地方运行,包括诸如ServerStorage、ReplicatedStorage等服务,但仅在服务器上运行。
-
客户端-脚本将在任何地方运行,包括ReplicatedStorage等服务,但仅在客户端上运行。
每个选项都有一个独特的图标,以便您在工作室编辑体验时进行区分。
您可以打开工作室,并更改体验中任意脚本的运行环境属性来尝试这个新功能。
我们为什么要做这种更新?
以下是我们做出这种更新的几个原因:
-
客户端和服务器代码可以存在于同一位置,使之更易于共享资源,资产创作者更易于创建“正常工作”的模型。
-
脚本和本地脚本的行为可以合并到单个场景中,这样我们以后更容易引入新的脚本类型。
如何使用?
如前所述,客户端和服务器代码可以放在同一个位置,这样就可以很容易地创建具有两者的包! 下面是一个使用自拍模式开发者模块的示例。
首先,我们将在工作室中启用此功能给您进行试用,同时我们也会确保功能不会存在任何未决问题。欢迎试用并且在这里分享您的体验!一旦我们解决了大家反馈的问题之后,我们将会在整个平台的实时体验中启用这个功能。
文件
常见问题
这个功能会让玩家看到我的脚本来源吗?
不会。我们从未将脚本来源复制到客户端。如果客户端需要运行脚本,我们将会复制其字节码。而且这只会在以下情况发生:
-
脚本是本地脚本
-
脚本将其运行环境设置在客户端
-
脚本是模块脚本
作为附加安全措施,运行环境只能通过工作室中的插件来更改。即使您的体验中存在后门,攻击者也无法利用它来更改运行环境并获取服务器端脚本的字节码。
发布后“旧版”运行环境会发生什么?
旧版只是我们给现有行为取的名字。在我们完全发布此功能后,这种运行环境将继续得到支持,所以,如果您愿意的话您也可以继续使用。
对本地脚本有何影响?
我们计划更新本地脚本的图标,使其不同于我们用于客户端运行环境的图标。除此之外,我们也知道本地脚本对于很多体验来说非常重要,因此我们没有为之计划额外的变更。
运行环境如何与“新手”容器交互?
新手容器通过在本地克隆其内容来工作,因此它会复制其中包含的任何脚本。如果您正在使用新运行环境的其中一种功能,例如客户端或服务器端,则原始脚本及其副本都将运行。因此,您应在这些容器中继续使用旧版运行环境或本地脚本。
如果我不希望脚本在某些地方运行怎么办?
通过使用现有的禁用属性仍然可以禁用脚本。
如果在运行时运行环境发生变化,会出现什么情况?
运行环境只能在工作室中通过属性小工具或使用插件进行更改。如果它的值在脚本运行时发生变化,则现有线程将终止,脚本将开始在新的运行环境中运行。
运行环境如何与数据流协同工作?
脚本从客户端流入和流出时将自动开始和停止执行。
是否有“插件”运行环境的计划?
有些人可能已经注意到运行环境枚举也包含“插件”。后续我们计划为应在插件中运行的脚本添加一个选项。
已知问题
-
工作室图标不会在资源管理器或脚本编辑器中更新。但这种情况只是暂时的,并且会在发布前解决。
-
由于我们以不同方式处理复制,您可能会在工作室中体验到不同的行为。我们正在寻找解决方法,使其与运行环境在体验中的工作方式更加一致。
-
如果在团队创建中使用运行环境,则运行环境不会保存。这种情况也是暂时的,会在发布前解决。
-
自动完成会显示客户端运行环境的服务器建议。这一问题将在即将发布的版本中解决。
-
优先复制中的脚本在游戏加载之前不会运行。这种情况也是暂时的,会在发布前解决。