脚本编辑器API:现在是测试版!

各位开发者:

大家好!夏日又来啦!希望大家在夏天玩的开心!我们在此非常兴奋地向各位插件开发者宣布一条关于 脚本编辑器应用程序编程接口测试版 的消息,相信大家了解后会像我们一样欣喜。

该应用程序编程接口极大地扩展了插件与脚本编辑器交互的范围,并提供以下功能:

  • 打开、关闭和编辑脚本时进行监控

  • 获取用户光标操作的信息,包括所选文本

  • 在不覆盖整个内容情况下读取和编辑脚本的指定部分

测试版可以通过切换 工作室 > 测试版功能 > 脚本编辑器应用程序编程接口 来启用。

更多详细信息,请参见下文!

应用程序编程接口概述

脚本文件

脚本文件实例是开放脚本编辑器文件(包括命令栏)的 替代 。它呈现了文件的内容,包括光标位置和选择等瞬时数据,以及在团队创建协作编辑模式(可能尚未在.Source属性中)中进行的未提交编辑。提供的脚本文件方法让大家异步查询和修改这些内容的状态。

例如,您可以通过以下方法从指定位置的脚本中检索文本:

string ScriptDocument:GetText(int startLine?, int startColumn?, int endLine?, int endColumn?)

下列方法可以编辑在指定位置的文本:

bool, string? ScriptDocument:EditTextAsync(string newText, int startLine, int startColumn, int endLine, int endColumn)

脚本文件的存在表示脚本已在脚本编辑器中打开。所有的脚本文件都以脚本编辑器服务为父本。

脚本文件的所有应用程序编程接口都具有与插件同等级别的安全性。

单击此处了解有关 脚本文件应用程序编程接口 的更多信息和文件。

脚本编辑器服务

脚本编辑器服务可以监控其脚本文件并与其交互。具体而言,为了便于利用脚本文件 应用程序编程接口,大家可以访问脚本文件,并在脚本文件处于开启、关闭和编辑状态时处理事件。

例如,以下代码试图检索与工作区中的“myScript”对应的脚本文件:

game:GetService("ScriptEditorService"):FindScriptDocument(workspace.myScript)

编辑任何脚本文件时,以下插件代码会打印输出语句:

game:GetService("ScriptEditorService").TextDocumentDidChange:Connect( **function** (doc, tbl) print("Changed", doc, tbl) **end** )

单击此处了解有关脚本编辑器服务的更多信息和文件。

使用示例

以下插件是脚本编辑器插件应用程序编程接口可以执行的操作示例:用户键入GS(<some_service>)时,文本将替换为<some_service> = game:GetService("<some_service>"):

 functionIsValidServiceName(ServiceName)
 local Success, Service = pcall(function() return game:GetService(ServiceName) end)
 return Success and Service
end
 game:GetService("ScriptEditorService").TextDocumentDidChange:Connect( **function** (Document, _)
 local Line = Document:GetLine()
 local ServiceName = string.match(Line, "GS%((%w+)%)")
 ifnot ServiceName **ornot** IsValidServiceName(ServiceName) **thenreturnend**
 local LineNumber, _, _, _ = Document:GetSelection()
 local NewText = string.format("local %s = game:GetService(\"%s\")", ServiceName, ServiceName)
 Document:EditTextAsync(NewText, LineNumber, 1, LineNumber, string.len(Line) + 1)
end )

展望未来

脚本编辑器插件应用程序编程接口测试版革新了脚本编辑器插件,我们迫不及待地想看看社区会用这些新工具构建什么。我们期待着收到大家的反馈,并希望应用程序编程接口可以为大家提供更多功能。

请注意:由于此应用程序编程接口仍处于测试阶段,我们可能会根据大家的反馈修改代码。如有需要,我们会通知大家。

关于我们    加入我们    条款    隐私政策
©2021 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。
粤ICP备20013629号