ScriptDocument

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Não replicado

Una instancia de ScriptDocument es un proxy del documento de un Editor de Script de Studio. Es diferente del LuaSourceContainer abierto en el editor en que representa el estado epímero de un documento abierto, y su representación está en un formato que es más adecuado para leer y editar el código que ej

El Editor de Scripts mismo existe y cambia en un hilo diferente que cualquier DataModel , por lo que el ScriptDocument replica el Editor de Scripts abierto, pero no es el editor abierto. Debido a la replicación, a veces hay un ligeramente pequeño retraso entre cambiar el texto en el

La existencia de un ScriptDocument indica que un documento se abre en el Editor de Script. Todas las instancias de ScriptDocument tienen ScriptEditorService como padre. Cada instancia adhiere a las siguientes convenciones de encodificación:

  • Todo el texto en ScriptDocument está codificado en UTF-8.
  • Todos los índices de línea tienen un índice de 1.
  • Todos los índices de personajes tienen un índice de 1 y cuentan UTF-8 bytes, no gráficos, por lo que la misma advertencia de TextBox.CursorPosition aplica: muchos personajes de Unicode toman más de un bytes.
  • Todos los rangos incluyen su posición de inicio y exclusiva de su posición de finalización, por lo tanto, start == end implica un rango vacío.

Todas las API para ScriptDocument están en el nivel de seguridad de Plugin .

Resumo

Métodos

  • GetLine(lineIndex : number?):string
    Segurança do plugin

    Devuelve el texto de la línea especificada. Cuando no se proporciona ningún argumento, devuelve la línea de la posición del cursor actual.

  • Segurança do plugin

    Devuelve el número de líneas en el documento.

  • Segurança do plugin

    Devuelve la instancia subyacente LuaSourceContainer, si existe, de lo contrario nil .

  • Segurança do plugin

    Obtiene el texto seleccionado en el editor, o una cadena vacía si no hay selección.

  • Segurança do plugin

    Devuelve la última selección del Editor de Script en el formato: CursorLine, CursorChar, AnchorLine, AnchorChar . Si el Editor de Script no tiene selección, CursorLine == AnchorLine y CursorChar == AnchorChar .

  • Segurança do plugin

    Obtiene la posición y el ancla del cursor más grande. Si el editor no tiene selección, son el mismo valor.

  • Segurança do plugin

    Obtiene la posición y el ancla del cursor más pequeño. Si el editor no tiene selección, son el mismo valor.

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    Segurança do plugin

    Regresa texto del editor abierto.

  • Segurança do plugin

    Devuelve los números de línea actualmente mostrados en el editor de cambios.

  • Segurança do plugin

    Regresa si el editor tiene o no un texto seleccionado.

  • Segurança do plugin

    Regresa true si el ScriptDocument representa la barra de comandos.

  • Rendimentos
    Segurança do plugin

    Las solicitudes que el editor asignó con este documento se cierran. Genera el hilo actual hasta que el editor responda a la solicitud.

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    Rendimentos
    Segurança do plugin

    Reemplaza el texto en el rango especificado desde ( startLine , startColumn ) a ( endLine , 1> endColumn1> ) con nuevoTexto.

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Rendimentos
    Segurança do plugin

    Pide al editor que seleccione su cursor a los valores de argumento.

  • Rendimentos
    Segurança do plugin
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Rendimentos
    Segurança do plugin

    Pide al editor que seleccione su cursor a los valores de argumento.

Eventos

Propriedades

Métodos

GetLine

Segurança do plugin

Devuelve el texto de la línea especificada. Cuando no se proporciona ningún argumento, devuelve la línea de la posición del cursor actual.

Parâmetros

lineIndex: number
Valor Padrão: "nil"

Devolução

Amostras de código

ScriptDocument.SelectionChanged and ScriptDocument:GetLine()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selected: Line {positionLine}, Char {positionCharacter}`)
print(`Anchor: Line {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Selected line text: {lineText}`)
end)
else
print("No scripts open")
end

GetLineCount

Segurança do plugin

Devuelve el número de líneas en el documento activo.


Devolução

Amostras de código

ScriptDocument:GetLineCount()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local lineCount = scriptDocument:GetLineCount()
print(`The script has {lineCount} lines!`)
else
print("No scripts open")
end
Segurança do plugin

Devuelve la instancia subyacente LuaSourceContainer, si existe, de lo contrario nil .


Devolução

Amostras de código

ScriptDocument:GetScript()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local openScript = scriptDocument:GetScript()
print(`Currently open script: {openScript:GetFullName()}`)
else
print("No scripts open")
end

GetSelectedText

Segurança do plugin

Obtiene el texto seleccionado en el editor, o una cadena vacía si no hay selección.


Devolução

Amostras de código

ScriptDocument:HasSelectedText() and :GetSelectedText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Currently selected text: {selectedText}`)
else
print("No text currently selected")
end
end)
else
print("No scripts open")
end

GetSelection

Segurança do plugin

Devuelve la última selección del Editor de Script en el formato: CursorLine, CursorChar, AnchorLine, AnchorChar . Si el Editor de Script no tiene selección, CursorLine == AnchorLine y CursorChar == AnchorChar .


Devolução

CursorLine, CursorChar, AnchorLine, AnchorChar.

GetSelectionEnd

Segurança do plugin

Obtiene la posición y el ancla del cursor más grande. Si el editor no tiene selección, son el mismo valor.


Devolução

Amostras de código

ScriptDocument:GetSelectionStart() and :GetSelectionEnd()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Selection start: Line {startLine}, Char {startCharacter}`)
print(`Selection end: Line {endLine}, Char {endCharacter}`)
else
print("No scripts open")
end

GetSelectionStart

Segurança do plugin

Obtiene la posición y el ancla del cursor más pequeño. Si el editor no tiene selección, son el mismo valor.


Devolução

Amostras de código

ScriptDocument:GetSelectionStart() and :GetSelectionEnd()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Selection start: Line {startLine}, Char {startCharacter}`)
print(`Selection end: Line {endLine}, Char {endCharacter}`)
else
print("No scripts open")
end

GetText

Segurança do plugin

Regresa texto del editor abierto. Debe ser llamado con 0, 2 o 4 argumentos:

  • Si se llama con 0 argumentos, obtiene todo el contenido del editor abierto.
  • Si se llama con 2 argumentos, obtiene el texto del documento que comienza en ( startLine , startColumn ).
  • Si se llama con 4 argumentos, obtiene el texto del documento que comienza en ( startLine , startColumn ) y termina en ( endLine , 1> endColumn1> ).

Parâmetros

startLine: number
Valor Padrão: "nil"
startCharacter: number
Valor Padrão: "nil"
endLine: number
Valor Padrão: "nil"
endCharacter: number
Valor Padrão: "nil"

Devolução

Amostras de código

ScriptDocument:GetText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local text = scriptDocument:GetText()
print(`Script contents: {text}`)
else
print("No scripts open")
end

GetViewport

Segurança do plugin

Devuelve el número de líneas actualmente mostradas en el editor. El editor muestra las líneas entre startLine y endLine, incluido. La primera y la última línea solo se muestran parcialmente. Por ejemplo, solo la parte superior del último píxel puede estar en la pantalla. Además, la fusión de código puede ocultar líneas entre startLine y endLine.


Devolução

Amostras de código

ScriptDocument:GetViewport

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local firstLine, lastLine = scriptDocument:GetViewport()
print(`Currently viewing lines {firstLine} to {lastLine}`)
else
print("No scripts open")
end

HasSelectedText

Segurança do plugin

Regresa si el editor tiene o no un texto seleccionado.


Devolução

Amostras de código

ScriptDocument:HasSelectedText() and :GetSelectedText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Currently selected text: {selectedText}`)
else
print("No text currently selected")
end
end)
else
print("No scripts open")
end

IsCommandBar

Segurança do plugin

Regresa true si el ScriptDocument representa la barra de comandos. La barra de comandos tiene reglas y limitaciones especiales en esta API:

  • Studio crea la barra de comandos antes de ejecutar los plugins, por lo que no siempre hace que se ejecute el evento que se abre, aunque cierra y reabre como Studio se transita entre DataModels.
  • No puedes editar la barra de comandos con EditTextAsync por razones de seguridad.

Devolução

Amostras de código

ScriptDocument:IsCommandBar()

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if document:IsCommandBar() then
print("Command bar document:", document)
end
end

CloseAsync

Rendimentos
Segurança do plugin

Las solicitudes que el editor asignó con este documento se cierran. Genera el hilo actual hasta que el editor responda a la solicitud. Si la función tiene éxito, se devuelve (verdadero, nulo). Si la función falla, se devuelve (falso, cadena) como una descripción del problema.

Esta función no puede cerrar la barra de comandos.


Devolução

Amostras 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

EditTextAsync

Rendimentos
Segurança do plugin

Reemplaza el texto en el rango especificado desde ( startLine , startColumn ) a ( endLine , 1> endColumn1>

Si la función tiene éxito, se devuelve ( true , nil ).

La función lanza un error si:

  • El rango es no válido.
  • El rango cortaría un carácter no nativo, por ejemplo, sólo reemplazar algunos de los bytes del carácter no nativo.
  • El propio newText contiene UTF-8 inválido.

Si la función falla,返回(EditTextAsync). La cadena es una descripción del problema。El tipo de fallo más común es un desajuste de versión。 Esto发生在您尝试调用 ScriptDocument 时,您试图调用 Class.ScriptDocument editar

Parâmetros

newText: string
startLine: number
startCharacter: number
endLine: number
endCharacter: number

Devolução

ForceSetSelectionAsync

Rendimentos
Segurança do plugin

Pide al editor que establezca la selección del cursor en los valores de argumento. Los dos argumentos de anclaje deben ser pasados, o ninguno. Si ninguno se pasa, entonces cada uno se predetermina como el argumento de cursor correspondiente. El editor puede rechazar actualizar su cursor si el contenido del texto del documento ha cambiado.

Parâmetros

cursorLine: number
cursorCharacter: number
anchorLine: number
Valor Padrão: "nil"
anchorCharacter: number
Valor Padrão: "nil"

Devolução

Amostras de código

ScriptDocument:ForceSetSelectionAsync()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Get the text on the cursor's current line
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Force select the entire line of text
local success, err = scriptDocument:ForceSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Set selection!")
else
print(`Failed to set selection because: {err}`)
end
else
print("No scripts open")
end

MultiEditTextAsync

Rendimentos
Segurança do plugin

Parâmetros

edits: Array

Devolução

RequestSetSelectionAsync

Rendimentos
Segurança do plugin

Pide al editor que establezca su selección de cursor a los valores de argumento. Ambos argumentos de ancla deben ser pasados, o ninguno. Si ninguno se pasa, entonces cada uno debe ser el mismo que el argumento de cursor correspondiente. El editor puede rechazar actualizar su cursor si el contenido del texto del documento ha cambiado o el cursor se ha movido desde que se hizo la solicitud. Muestra (verdadero, nulo) si el

Parâmetros

cursorLine: number
cursorCharacter: number
anchorLine: number
Valor Padrão: "nil"
anchorCharacter: number
Valor Padrão: "nil"

Devolução

Amostras de código

ScriptDocument:RequestSetSelectionAsync()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Get the text on the cursor's current line
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Force select the entire line of text
local success, err = scriptDocument:RequestSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Set selection!")
else
print(`Failed to set selection because: {err}`)
end
else
print("No scripts open")
end

Eventos

SelectionChanged

Segurança do plugin

Se activa cuando el ScriptDocument cambia, incluida inmediatamente después de un cambio de texto.

Parâmetros

positionLine: number
positionCharacter: number
anchorLine: number
anchorCharacter: number

Amostras de código

ScriptDocument.SelectionChanged and ScriptDocument:GetLine()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selected: Line {positionLine}, Char {positionCharacter}`)
print(`Anchor: Line {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Selected line text: {lineText}`)
end)
else
print("No scripts open")
end

ViewportChanged

Segurança do plugin

Se activa cuando los números de línea mostrados en el editor cambian. Vea ScriptDocument.GetViewport para obtener más información.

Parâmetros

startLine: number
endLine: number

Amostras de código

Connecting to ScriptDocument.ViewportChanged

--!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)