Lernen
Engine-Klasse
ScriptEditorService
Nicht erstellbar
Dienst
Nicht repliziert

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.



API-Referenz
Methoden
DeregisterAutocompleteCallback
Plugin-Sicherheit
ScriptEditorService:DeregisterAutocompleteCallback(name:string):()
Parameter
name:string
Rückgaben
()
Code-Beispiele
DeregisterAutocompleteCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Deregistriert die Auto-Vervollständigung Rückruffunktion
ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback
Plugin-Sicherheit
ScriptEditorService:DeregisterScriptAnalysisCallback(name:string):()
Parameter
name:string
Rückgaben
()
Code-Beispiele
DeregisterScriptAnalysisCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Deregistriert die Skriptanalyse-Rückruffunktion
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")

FindScriptDocument
Plugin-Sicherheit
ScriptEditorService:FindScriptDocument(script:LuaSourceContainer):ScriptDocument
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")
end
Verbindung 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
Plugin-Sicherheit
ScriptEditorService:GetEditorSource(script:LuaSourceContainer):string
Parameter
Rückgaben

GetScriptDocuments
Plugin-Sicherheit
ScriptEditorService:GetScriptDocuments():{ScriptDocument}
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
end

OpenScriptDocumentAsync
Angehalten
Plugin-Sicherheit
ScriptEditorService:OpenScriptDocumentAsync(
Parameter
options:Dictionary
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}`)
end

RegisterAutocompleteCallback
Plugin-Sicherheit
ScriptEditorService:RegisterAutocompleteCallback(
name:string, priority:number, callbackFunction:function
):()
Parameter
name:string
priority:number
callbackFunction:function
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
Plugin-Sicherheit
ScriptEditorService:RegisterScriptAnalysisCallback(
name:string, priority:number, callbackFunction:function
):()
Parameter
name:string
priority:number
callbackFunction:function
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
Angehalten
Plugin-Sicherheit
ScriptEditorService:UpdateSourceAsync(
script:LuaSourceContainer, callback:function
):()
Parameter
callback:function
Rückgaben
()

Events
TextDocumentDidChange
Plugin-Sicherheit
ScriptEditorService.TextDocumentDidChange(
document:ScriptDocument, changesArray:Variant
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
Plugin-Sicherheit
ScriptEditorService.TextDocumentDidClose(oldDocument:ScriptDocument):RBXScriptSignal
Parameter
oldDocument:ScriptDocument
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
Plugin-Sicherheit
ScriptEditorService.TextDocumentDidOpen(newDocument:ScriptDocument):RBXScriptSignal
Parameter
newDocument:ScriptDocument
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)

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.