各位开发者:
大家好!夏日又来啦!希望大家在夏天玩的开心!我们在此非常兴奋地向各位插件开发者宣布一条关于 脚本编辑器应用程序编程接口测试版 的消息,相信大家了解后会像我们一样欣喜。
该应用程序编程接口极大地扩展了插件与脚本编辑器交互的范围,并提供以下功能:
-
打开、关闭和编辑脚本时进行监控
-
获取用户光标操作的信息,包括所选文本
-
在不覆盖整个内容情况下读取和编辑脚本的指定部分
测试版可以通过切换 工作室 > 测试版功能 > 脚本编辑器应用程序编程接口 来启用。
更多详细信息,请参见下文!
应用程序编程接口概述
脚本文件
脚本文件实例是开放脚本编辑器文件(包括命令栏)的 替代 。它呈现了文件的内容,包括光标位置和选择等瞬时数据,以及在团队创建协作编辑模式(可能尚未在.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 )
展望未来
脚本编辑器插件应用程序编程接口测试版革新了脚本编辑器插件,我们迫不及待地想看看社区会用这些新工具构建什么。我们期待着收到大家的反馈,并希望应用程序编程接口可以为大家提供更多功能。
请注意:由于此应用程序编程接口仍处于测试阶段,我们可能会根据大家的反馈修改代码。如有需要,我们会通知大家。