ScriptEditorService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Este servicio se usa para interactuar con ScriptDocument instancias.
Resumen
Métodos
Elimina una llamada de devolución de llamada previamente registrada con el nombre name.
Elimina una llamada de devolución de llamada previamente registrada con el nombre name.
Devuelve el abierto ScriptDocument correspondiente al dado LuaSourceContainer o nil si el script dado no está abierto.
Devuelve la fuente de tiempo de edición para el script dado.
Devuelve un array de los documentos de script actualmente abiertos, incluida la barra de comandos.
Registra una llamada de autocompletado llamada con prioridad .
Registra una llamada de análisis de scripts callbackFunction llamada con el nombre name con priority .
Solicitudes que un editor de scripts abra el script especificado.Devuelve (verdadero, nulo) si la solicitud tiene éxito.Devuelve (false, string) si la solicitud falla, con una cadena que describe el problema.
Genera nuevo contenido desde el antiguo script y actualiza el editor de scripts si está abierto, o la instancia Script si el editor de scripts está cerrado.
Eventos
Se produce fuegos justo después de un cambio de ScriptDocument 2.
Se produce un incendio justo antes de que se destruya un objeto ScriptDocument, que ocurre justo después de que el editor de scripts se cierre.
Se produce fuegos justo después de que se cree y patrocine un objeto ScriptDocument al servicio, que ocurre justo después de que se abra el editor de scripts.
Propiedades
Métodos
DeregisterAutocompleteCallback
Elimina una llamada de devolución de llamada previamente registrada con el nombre name.
Parámetros
Devuelve
Muestras de código
game.ScriptEditorService:DeregisterAutocompleteCallback("foo")
DeregisterScriptAnalysisCallback
Elimina una llamada de devolución de llamada previamente registrada con el nombre name.
Parámetros
Devuelve
Muestras de código
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")
FindScriptDocument
Devuelve el abierto ScriptDocument correspondiente al dado LuaSourceContainer o nil si el script dado no está abierto.
Parámetros
Devuelve
Muestras de código
ScriptDocument:CloseAsync
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Find the first open script document
for _, document in documents do
-- The Command Bar can't be closed, so don't select it
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Closed {scriptDocument.Name}`)
else
warn(`Failed to close {scriptDocument.Name} because: {err}`)
end
else
print("No open scripts")
end
Demonstrates using ScriptDocument.ViewportChanged to print the start and end line of the script's viewport when it changes.
To run:
- Ensure Output view is open
- Run the below code in the Command Bar
- Scroll up and down in the opened Script window
--!nocheck
--[[
To run:
1. Ensure Output view is open
2. Run the below code in the Command Bar
3. Scroll up and down in the opened Script window
Print statements from the ViewportChanged event will appear in the Output
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Create text that spans many lines
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Create a script containing the dummy text and open it
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Failed to open script because: {err}`)
return
end
-- Get a reference to the opened script
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Script Viewport Changed - startLine: {startLine}, endLine: {endLine}`)
end
-- Connect the ViewportChanged event to the function above that prints the start and end line of the updated viewport
scriptDocument.ViewportChanged:Connect(onViewportChanged)
GetEditorSource
Devuelve la fuente de tiempo de edición para el script dado.
Si el script está abierto en el Editor de guiones, este método devuelve el texto que se muestra actualmente en el editor.Si el script no está abierto en el editor, el método devuelve el texto que el editor mostraría si se abre.La fuente de tiempo de edición no siempre es consistente con la propiedad Script.Source.
Parámetros
Devuelve
GetScriptDocuments
Devuelve un array de los documentos de script actualmente abiertos, incluida la barra de comandos.
Devuelve
Muestras de código
Gets all script documents in the place with ScriptEditorService:GetScriptDocuments() and prints their names.
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local scriptDocuments = ScriptEditorService:GetScriptDocuments()
for _, scriptDocument in scriptDocuments do
-- Prints the name of each script
if not scriptDocument:IsCommandBar() then
print(scriptDocument.Name)
end
end
RegisterAutocompleteCallback
Registra una llamada de autocompletado llamada con prioridad .
Cuando el editor de scripts invoca la autocompletación, todas las llamadas de devolución de llamada registradas se ordenan por prioridad ascendente con la solicitud y respuesta de autocompletación.Múltiples llamadas de devolución pueden compartir una prioridad, pero luego su orden de llamada es impredecible.Cada llamada de devolución está destinada a devolver una tabla de respuesta con el mismo formato que la tabla de entrada de respuesta.Las llamadas de devolución no deberían producirse.La primera llamada de devolución invocada recibe la respuesta del autocompletado interno como su tabla de respuestas, y las llamadas de devolución posteriores reciben la salida del llamado anterior como su tabla de respuestas.Las llamadas de devolución pueden modificar la tabla pasada o devolver una nueva tabla del mismo formato.
El callbackFunction debe tener el siguiente introducir: (Request: table, Response: table) -> table
La tabla de solicitudes tiene el siguiente formato:
type Request = {position: {line: number,character: number},textDocument: {document: ScriptDocument?,script: LuaSourceContainer?}}
- position es la posición del cursor de un solo índice donde estás completando automáticamente.
- textDocument.document es el abierto ScriptDocument que estás completando, si existe.
- textDocument.script es el LuaSourceContainer que estás completando, si existe.
Si ambos textDocument.document y textDocument.script están presentes, entonces se corresponden entre sí: req.textDocument.document:GetScript() == req.textDocument.script
La tabla de respuesta tiene el siguiente formato:
type Response = {items: {{label: string, -- The labelkind: Enum.CompletionItemKind?,tags: {Enum.CompletionItemTag}?,detail: string?,documentation: {value: string,}?,overloads: number?,learnMoreLink: string?,codeSample: string?,preselect: boolean?,textEdit: {newText: string,insert: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },}?}}}
- Response.items es un array de los elementos de finalización. El orden de este array es insignificante y se resuelve en el editor cuando el usuario escribe.
- Response.items[n].label es la etiqueta del elemento que se muestra en el menú de autocompletado.
- Response.items[n].kind especifica qué tipo de elemento de autocompletado es este.Principalmente, esto controla el icono dado al elemento en el editor.No todas las clases tienen un íconoúnico.Si no se especifica, el editor usa el ícono"Texto".Las clases no admitidas predeterminan mostrar el ícono"Propiedad".
- Response.items[n].tags especifica un array de etiquetas que describen este objetode finalización. Vea el Enum.CompletionItemTag para detalles de su función.
- Response.items[n].details especifica una cadena que describe detalles sobre el objetode finalización.Para los elementos predeterminados, esta es una representación de cadena de su introducir.Tenga en cuenta que, para que el widget de documentación se muestre, documentation debe estar presente, pero documentation.value puede estar vacío.
- Response.items[n].documentation especifica el cuerpo principal de la documentación en su campo value. documentation está presente, incluso si el valor está vacío, por lo que se muestra la ventana de documentación si se especifican detalles o sobrecargas.
- Response.items[n].overloads especifica el número de sobrecargas de una función de autocompletado.
- Response.items[n].learnMoreLink enlaces a una página relevante en los documentos del creador.Esta URL debe ser una solicitud de https a crear.roblox.com; no se muestran otras URL en el editor.
- Response.items[n].codeSample especifica un uso de muestra del objetode finalización. documentation debe ser no vacío para mostrar este campo.
- Response.items[n].preselect Si es verdad, el editor ordena este elemento de finalización antes que todos los demás y lo selecciona por defecto para el usuario. No hay efecto si es falso o está ausente.
- Response.items[n].textEdit Si está presente, aceptar la finalización aplica este editor de texto - insertar o reemplazar el espacio entre las posiciones de inicio y final con nuevo texto.
Si un llamado de devolución devuelve un resultado malformado o encuentra un error, el editor descarta la tabla de respuesta modificada y usa la lista de resultados de autocompletado integrada.
Parámetros
Devuelve
Muestras de código
ScriptEditorService:RegisterAutocompleteCallback Servicio de editor de guiones: Desactivar llamada de devolución de llamada de autocompletado
--!nocheck
-- Ejecute el siguiente código en la barra de comandos
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)
-- Para des registrar la llamada de devolución, ejecute el siguiente código en la barra de comandos
ScriptEditorService:DeregisterAutocompleteCallback("foo")
RegisterScriptAnalysisCallback
Registra una llamada de análisis de scripts callbackFunction llamada con el nombre name con priority .Cuando se ejecuta el análisis de scripts en Studio, todas las llamadas de devolución registradas se llaman en orden ascendente de prioridad.Cada llamada de devolución está destinada a devolver una tabla de respuesta que coincida con el formato especificado a continuación.Las llamadas de devolución no deben producirse.
La tabla de solicitudes tiene el siguiente formato, donde script es el LuaSourceContainer que se va a analizar.
type Request = {script: LuaSourceContainer?}
La tabla de respuestas tiene el siguiente formato, donde diagnostics es un array de tablas de diagnóstico. Cada tabla de diagnóstico tiene las entradas enumeradas a continuación.
type Response = {diagnostics: {{range: {start: {line: number,character: number,},["end"]: {line: number,character: number,}},code: string?,message: string,severity: Enum.Severity?,codeDescription: { href: string }?}}}
- range representa un rango de texto que debe ser resaltado por el compilador, proporcionando qué línea/carácter debe comenzar a resaltar y qué línea/carácter debe dejar de resaltar.
- code es una etiqueta para el mensaje.
- message es un mensaje de advertencia que se muestra para la línea.También aparecerá en una ventana emergente cuando el usuario pase el cursor sobre la línea en el editor de scripts.
- severity es un valor de Enum.Severity para los diagnósticos.Esto determina cómo se categoriza el diagnóstico en la herramienta de análisis de scripts en Studio, así como cómo se resalta el texto en el editor de scripts.
- codeDescription enlaces a una página relevante en los documentos del creador. Esta URL debe ser una solicitud https a create.roblox.com ; no se muestran otras URL en el editor.
Parámetros
Devuelve
Muestras de código
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
-- Iterar línea por línea
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 found here!",
severity = Enum.Severity.Warning,
})
end
lineNo = lineNo + #newline:gsub("\n+", "\0%0\0"):gsub(".%z.", "."):gsub("%z", "")
end
return response
end)
OpenScriptDocumentAsync
Solicitudes que un editor de scripts abra el script especificado.Devuelve (verdadero, nulo) si la solicitud tiene éxito.Devuelve (false, string) si la solicitud falla, con una cadena que describe el problema.
Si el script ya está abierto, esta función tiene éxito y cambia las pestañas al editor asociado.
Parámetros
Devuelve
Muestras de código
ScriptEditorService:OpenScriptDocumentAsync
--!nocheck
-- Run the following code in the Command Bar
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("Opened script document")
else
print(`Failed to open script document: {err}`)
end
UpdateSourceAsync
Devuelve el tiempo de edición Script.Source para el script dado.
Esta función llama al llamado de devolución pasado utilizando el antiguo contenido del script para calcular el nuevo contenido del script.
Si el script está abierto en el Editor de guiones, entonces emite una solicitud al editor para actualizar su de origen.El editor puede rechazar esta actualización si la propiedad Script.Source estaba desactualizada con la versión del usuario del script cuando se llamó esta función, en cuyo caso se invocará nuevamente el llamado de devolución y se repetirá el intento.
La llamada de devolución puede no producirse.Si la llamada de devolución devuelve nil, la operación se cancela.Esta función se devuelve hasta que la operación se cancele o tenga éxito.
Si el script no se abre en el editor, la nueva actualización de contenido se envía a la de origendel script, que es el texto que el editor mostraría si se abre.
local ses = game:GetService('ScriptEditorService')
ses:UpdateSourceAsync(Workspace.Script, function(oldContent)
return oldContent .. " World!"
end)
Parámetros
Instancia de script para actualizar.
La función para devolver nuevo contenido de script.
Devuelve
Eventos
TextDocumentDidChange
Se produce fuegos justo después de un cambio ScriptDocument de formato. El textChanged es un array de estructuras de cambio del formato:
{ range : { start : { line : number, character : number }, end : { line : number, character : number } }, text: string }
Parámetros
Muestras de código
ScriptEditorService.TextDocumentDidChange
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Changed", scriptDocument, changes)
end)
TextDocumentDidClose
Se produce un incendio justo antes de que se destruya un objeto ScriptDocument, que ocurre justo después de que el editor de scripts se cierre.Después de que este evento se active, el ScriptDocument entra en un estado "Cerrado" y tratar de llamar sus métodos lanza un error.Los objetos ScriptDocument no son reutilizables, incluso si el editor de scripts vuelve a abrir el mismo script.
Parámetros
Muestras de código
Servicio de editor de guiones.TextDocumentDidClose
--!nocheck
-- Ejecute el siguiente código en la barra de comandos
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Closed", scriptDocument)
end)
TextDocumentDidOpen
Se produce fuegos justo después de que se cree y patrocine un objeto ScriptDocument al servicio, que ocurre justo después de que se abra el editor de scripts.
Parámetros
Muestras de código
ScriptEditorService.TextDocumentDidOpen
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Opened", scriptDocument)
end)