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
DeregistreCallbackAutoComplétion()
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Annuler le callback d'autocomplétion pour 'foo'
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 Output est ouverte
2. Exécutez le code ci-dessous dans la barre de commandes
3. Faites défiler vers le haut et vers le bas dans la fenêtre du script ouverte
Les instructions Print de l'événement ViewportChanged apparaîtront dans la sortie
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Créez un texte qui s'étend sur plusieurs lignes
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Créez un script contenant le texte factice et ouvrez-le
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 car : {err}`)
return
end
-- Obtenez une référence au script ouvert
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Zone d'affichage du script changée - ligne de départ : {startLine}, ligne de fin : {endLine}`)
end
-- Connectez l'événement ViewportChanged à la fonction ci-dessus qui imprime la ligne de départ et la ligne de fin de la zone d'affichage 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
Imprime le nom de chaque script
--!nocheck
-- Exécutez le code suivant dans la barre de commande
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ésinscrire 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
EnregistrerAnalyseScriptCallback()
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
()

É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 commandes
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Modifié", 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.