Apprendre
Classe de moteur
ScriptEditorService
Création impossible
Service
Non répliqué

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.



Référence API
Méthodes
DeregisterAutocompleteCallback
Sécurité des plugins
ScriptEditorService:DeregisterAutocompleteCallback(name:string):()
Paramètres
name:string
Retours
()
Échantillons de code
DeregisterAutocompleteCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback
Sécurité des plugins
ScriptEditorService:DeregisterScriptAnalysisCallback(name:string):()
Paramètres
name:string
Retours
()
Échantillons de code
DeregisterScriptAnalysisCallback()
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")

FindScriptDocument
Sécurité des plugins
ScriptEditorService:FindScriptDocument(script:LuaSourceContainer):ScriptDocument
Paramètres
Échantillons de code
ScriptDocument:CloseAsync
--!nocheck
-- Exécutez le code suivant dans la barre de commandes
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Trouvez le premier document de script ouvert
for _, document in documents do
-- La barre de commandes ne peut pas être fermée, donc ne la sélectionnez pas
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Fermé {scriptDocument.Name}`)
else
warn(`Échec de la fermeture de {scriptDocument.Name} parce que : {err}`)
end
else
print("Aucun script ouvert")
end
Connexion à ScriptDocument.ViewportChanged
--!nocheck
--[[
Pour exécuter :
1. Assurez-vous que la vue de sortie est ouverte
2. Exécutez le code ci-dessous dans la barre de commande
3. Faites défiler vers le haut et vers le bas dans la fenêtre de script ouverte
Les instructions d'impression de l'événement ViewportChanged apparaîtront dans la sortie
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Créer un texte qui s'étend sur plusieurs lignes
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Créer un script contenant le texte fictif et l'ouvrir
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Échec de l'ouverture du script en raison de : {err}`)
return
end
-- Obtenir une référence au script ouvert
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Changement de vue du script - startLine: {startLine}, endLine: {endLine}`)
end
-- Connecter l'événement ViewportChanged à la fonction ci-dessus qui imprime la ligne de début et la ligne de fin de la vue mise à jour
scriptDocument.ViewportChanged:Connect(onViewportChanged)

GetEditorSource
Sécurité des plugins
ScriptEditorService:GetEditorSource(script:LuaSourceContainer):string
Paramètres
Retours

GetScriptDocuments
Sécurité des plugins
ScriptEditorService:GetScriptDocuments():{ScriptDocument}
Échantillons de code
Imprimer le nom de chaque script
--!nocheck
-- Exécutez le code suivant dans la barre de commandes
local ScriptEditorService = game:GetService("ScriptEditorService")
local scriptDocuments = ScriptEditorService:GetScriptDocuments()
for _, scriptDocument in scriptDocuments do
-- Imprime le nom de chaque script
if not scriptDocument:IsCommandBar() then
print(scriptDocument.Name)
end
end

OpenScriptDocumentAsync
Rendement
Sécurité des plugins
ScriptEditorService:OpenScriptDocumentAsync(
Paramètres
options:Dictionary
Valeur par défaut : "nil"
Retours
Échantillons de code
OpenScriptDocumentAsync()
--!nocheck
-- Exécutez le code suivant dans la barre de commande
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("Document de script ouvert")
else
print(`Échec de l'ouverture du document de script : {err}`)
end

RegisterAutocompleteCallback
Sécurité des plugins
ScriptEditorService:RegisterAutocompleteCallback(
name:string, priority:number, callbackFunction:function
):()
Paramètres
name:string
priority:number
callbackFunction:function
Retours
()
Échantillons de code
RegisterAutocompleteCallback() et DeregisterAutocompleteCallback()
--!nocheck
-- Exécutez le code suivant dans la barre de commandes
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)
-- Pour désenregistrer le rappel, exécutez le code suivant dans la barre de commandes
ScriptEditorService:DeregisterAutocompleteCallback("foo")

RegisterScriptAnalysisCallback
Sécurité des plugins
ScriptEditorService:RegisterScriptAnalysisCallback(
name:string, priority:number, callbackFunction:function
):()
Paramètres
name:string
priority:number
callbackFunction:function
Retours
()
Échantillons de code
RegisterScriptAnalysisCallback()
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:RegisterScriptAnalysisCallback("foo", 1, function(Req: Request): Response
local response = {
diagnostics = {},
}
local lineNo = 1
-- Itérer ligne par ligne
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 trouvé ici!",
severity = Enum.Severity.Warning,
})
end
lineNo = lineNo + #newline:gsub("\n+", "\0%0\0"):gsub(".%z.", "."):gsub("%z", "")
end
return response
end

UpdateSourceAsync
Rendement
Sécurité des plugins
ScriptEditorService:UpdateSourceAsync(
script:LuaSourceContainer, callback:function
):()
Paramètres
callback:function
Retours
()
Échantillons de code
Mettre à jour la source de manière asynchrone
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:UpdateSourceAsync(workspace.Script, function(oldContent)
return oldContent .. " Monde!"
end)

Événements
TextDocumentDidChange
Sécurité des plugins
ScriptEditorService.TextDocumentDidChange(
document:ScriptDocument, changesArray:Variant
Paramètres
changesArray:Variant
Échantillons de code
ScriptEditorService.TextDocumentDidChange
--!nocheck
-- Exécutez le code suivant dans la barre de commande
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Changé", scriptDocument, changes)
end)

TextDocumentDidClose
Sécurité des plugins
ScriptEditorService.TextDocumentDidClose(oldDocument:ScriptDocument):RBXScriptSignal
Paramètres
oldDocument:ScriptDocument
Échantillons de code
ScriptEditorService.TextDocumentDidClose
--!nocheck
-- Exécutez le code suivant dans la barre de commandes
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Fermé", scriptDocument)
end)

TextDocumentDidOpen
Sécurité des plugins
ScriptEditorService.TextDocumentDidOpen(newDocument:ScriptDocument):RBXScriptSignal
Paramètres
newDocument:ScriptDocument
Échantillons de code
ScriptEditorService.TextDocumentDidOpen
--!nocheck
-- Exécutez le code suivant dans la barre de commandes
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Ouvert", scriptDocument)
end)

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.