Engine-Klasse
ScriptEditorService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Zusammenfassung
Methoden
DeregisterAutocompleteCallback(name: string):() |
DeregisterScriptAnalysisCallback(name: string):() |
GetEditorSource(script: LuaSourceContainer):string |
OpenScriptDocumentAsync(script: LuaSourceContainer,options: Dictionary):Tuple |
RegisterAutocompleteCallback(name: string,priority: number,callbackFunction: function):() |
RegisterScriptAnalysisCallback(name: string,priority: number,callbackFunction: function):() |
UpdateSourceAsync(script: LuaSourceContainer,callback: function):() |
Events
TextDocumentDidChange(document: ScriptDocument,changesArray: Variant):RBXScriptSignal |
TextDocumentDidClose(oldDocument: ScriptDocument):RBXScriptSignal |
TextDocumentDidOpen(newDocument: ScriptDocument):RBXScriptSignal |
API-Referenz
Methoden
DeregisterAutocompleteCallback
Parameter
Rückgaben
()
Code-Beispiele
DeregisterAutocompleteCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Deregistriert die Auto-Vervollständigung Rückruffunktion
ScriptEditorService:DeregisterAutocompleteCallback("foo")DeregisterScriptAnalysisCallback
Parameter
Rückgaben
()
Code-Beispiele
DeregisterScriptAnalysisCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Deregistriert die Skriptanalyse-Rückruffunktion
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")FindScriptDocument
Parameter
Rückgaben
Code-Beispiele
ScriptDocument:CloseAsync
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Finde das erste geöffnete Skriptdokument
for _, document in documents do
-- Die Befehlszeile kann nicht geschlossen werden, also wähle sie nicht aus
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Geschlossen {scriptDocument.Name}`)
else
warn(`Fehler beim Schließen von {scriptDocument.Name} weil: {err}`)
end
else
print("Keine offenen Skripte")
endVerbindung zu ScriptDocument.ViewportChanged
--!nocheck
--[[
Um es auszuführen:
1. Stellen Sie sicher, dass die Ausgabeansicht geöffnet ist
2. Führen Sie den folgenden Code in der Befehlszeile aus
3. Scrollen Sie im geöffneten Skriptfenster nach oben und unten
Ausgabe von Print-Anweisungen des ViewportChanged-Ereignisses erscheint in der Ausgabe
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Erstellen Sie Text, der sich über viele Zeilen erstreckt
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Erstellen Sie ein Skript, das den Dummy-Text enthält, und öffnen Sie es
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Fehler beim Öffnen des Skripts, weil: {err}`)
return
end
-- Holen Sie sich eine Referenz zum geöffneten Skript
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Viewport des Skripts geändert - Startzeile: {startLine}, Endzeile: {endLine}`)
end
-- Verbinden Sie das ViewportChanged-Ereignis mit der obigen Funktion, die die Start- und Endzeile des aktualisierten Viewports ausgibt
scriptDocument.ViewportChanged:Connect(onViewportChanged)GetEditorSource
Parameter
Rückgaben
GetScriptDocuments
Rückgaben
Code-Beispiele
Gib den Namen jedes Skripts aus
--!nocheck
-- Führe den folgenden Code in der Befehlsleiste aus
local ScriptEditorService = game:GetService("ScriptEditorService")
local scriptDocuments = ScriptEditorService:GetScriptDocuments()
for _, scriptDocument in scriptDocuments do
-- Gibt den Namen jedes Skripts aus
if not scriptDocument:IsCommandBar() then
print(scriptDocument.Name)
end
endOpenScriptDocumentAsync
Parameter
| Standardwert: "nil" |
Rückgaben
Code-Beispiele
OpenScriptDocumentAsync()
--!nocheck
-- Führen Sie den folgenden Code in der Kommandozeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
local Workspace = game:GetService("Workspace")
local newScript = Instance.new("Script")
newScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(newScript)
if success then
print("Skript-Dokument geöffnet")
else
print(`Fehler beim Öffnen des Skript-Dokuments: {err}`)
endRegisterAutocompleteCallback
Rückgaben
()
Code-Beispiele
RegisterAutocompleteCallback() und DeregisterAutocompleteCallback()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
type Request = {
position: {
line: number,
character: number,
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?,
},
}
type Response = {
items: {
{
label: string,
kind: Enum.CompletionItemKind?,
tags: { Enum.CompletionItemTag }?,
detail: string?,
documentation: {
value: string,
}?,
overloads: number?,
learnMoreLink: string?,
codeSample: string?,
preselect: boolean?,
textEdit: {
newText: string,
replace: {
start: { line: number, character: number },
["end"]: { line: number, character: number },
},
}?,
}
},
}
local autocompleteCallback = function(request: Request, response: Response): Response
local item = {
label = "foo",
preselect = true,
}
table.insert(response.items, item)
return response
end
ScriptEditorService:RegisterAutocompleteCallback("foo", 1, autocompleteCallback)
-- Um den Callback zu deregistrieren, führen Sie den folgenden Code in der Befehlszeile aus
ScriptEditorService:DeregisterAutocompleteCallback("foo")RegisterScriptAnalysisCallback
Rückgaben
()
Code-Beispiele
RegistriereScriptAnalyseCallback()
type Request = {
["script"]: LuaSourceContainer,
}
type Response = {
diagnostics: {
{
range: {
start: {
line: number,
character: number,
},
["end"]: {
line: number,
character: number,
},
},
code: string?,
message: string,
severity: Enum.Severity?,
codeDescription: { href: string }?,
}
},
}
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:RegisterScriptAnalyseCallback("foo", 1, function(Req: Request): Response
local response = {
diagnostics = {},
}
local lineNo = 1
-- Zeilenweise iterieren
for text, newline in Req.script.Source:gmatch("([^\r\n]*)([\r\n]*)") do
local startIndex, endIndex = string.find(text, "Foo")
if startIndex and endIndex then
table.insert(response.diagnostics, {
range = {
["start"] = {
line = lineNo,
character = startIndex,
},
["end"] = {
line = lineNo,
character = endIndex,
},
},
code = "FooFinder",
message = "Foo hier gefunden!",
severity = Enum.Severity.Warning,
})
end
lineNo = lineNo + #newline:gsub("\n+", "\0%0\0"):gsub(".%z.", "."):gsub("%z", "")
end
return response
end)UpdateSourceAsync
Parameter
Rückgaben
()
Events
TextDocumentDidChange
ScriptEditorService.TextDocumentDidChange(
Parameter
changesArray:Variant |
Code-Beispiele
ScriptEditorService.TextDocumentDidChange
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Geändert", scriptDocument, changes)
end)TextDocumentDidClose
Parameter
Code-Beispiele
ScriptEditorService.TextDocumentDidClose
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Geschlossen", scriptDocument)
end)TextDocumentDidOpen
Parameter
Code-Beispiele
ScriptEditorService.TextDocumentDidOpen
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Geöffnet", scriptDocument)
end)