ScriptDocument

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Replicato

Un'istanza ScriptDocument è un proxy della documentazione di uno Studio Editore script. È diverso dal LuaSourceContainer aperto nell'editor in cui rappresenta lo stato epimerale di un documento aperto, e la sua rappresentazione è in un formato che è più adatto per la lettura e l'edizione del cod

Il Editor del Script stesso esiste e cambia in un thread diverso da qualsiasi DataModel , quindi il Class.ScriptDocument replica l'Editor del Script aperto, ma non è l'Editor aperto. A causa della replicazione, ci sono a volte un leggero ritardo tra il cambiamento del testo nell

L'esistenza di un ScriptDocument indica che un documento è aperto nell'Editor del Script. Tutte le istanze ScriptDocument hanno ScriptEditorService come parent. Ogni istanza aderisce alle seguenti convenzioni di encodifica:

  • Tutto il testo in ScriptDocument è codificato in UTF-8.
  • Tutti gli indici di linea sono 1-indexed.
  • Tutti gli indici dei personaggi sono 1-indexed e contano UTF-8 bytes, non grazie, quindi lo stesso avviso da TextBox.CursorPosition si applica: molti caratteri Unicode prendono più di un bytes.
  • Tutti i range sono inclusi nella loro posizione di partenza e esclusi dalla loro posizione di fine, quindi start == end implica un range vuoto.

Tutte le API per ScriptDocument sono al livello di sicurezza Plugin .

Sommario

Metodi

  • GetLine(lineIndex : number?):string
    Sicurezza Plugin

    Restituisce il testo della linea specificata. Quando non viene fornito alcun argomento, restituisce la linea della posizione del cursore attuale.

  • Sicurezza Plugin

    Restituisce il numero di righe nel documento.

  • Sicurezza Plugin

    Restituisce l'istanza LuaSourceContainer esempio, se esiste, altrimenti nil .

  • Sicurezza Plugin

    Ottiene il testo selezionato nell'editor, o una stringa vuota se non c'è una selezione.

  • Sicurezza Plugin

    Restituisce l'ultima selezione conosciuta dello Script Editor nel formato: CursorLine, CursorChar, AnchorLine, AnchorChar . Se lo Script Editor non ha selezione, CursorLine == AnchorLine e CursorChar == AnchorChar .

  • Sicurezza Plugin

    Ottiene la posizione e l'ancora della posizione del cursore. Se l'editor non ha selezionato nulla, sono gli stessi valori.

  • Sicurezza Plugin

    Ottiene la posizione e l'ancora della posizione del cursore più piccola. Se l'editor non ha selezionato nulla, sono uguali al valore.

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    Sicurezza Plugin

    Restituisce il testo dall'editor aperto.

  • Sicurezza Plugin

    Restituisce i numeri di riga attualmente mostrati nel cambiamento di editor.

  • Sicurezza Plugin

    Restituisce se l'editor ha selezionato del testo o meno.

  • Sicurezza Plugin

    Restituisce vero se il ScriptDocument rappresenta la barra dei comandi.

  • Resa
    Sicurezza Plugin

    Le richieste che l'editor associato a questo documento Chiudere. Genera il thread corrente fino a quando l'editor risponde alla Richiesta.

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    Resa
    Sicurezza Plugin

    Rimpiazza il testo nella gamma specificata da ( startLine , startColumn ) a ( endLine , 1> endColumn1> ) con nuovoTesto.

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Resa
    Sicurezza Plugin

    Chiede al editor di impostare la selezione del cursor al valore dell'argomento.

  • Resa
    Sicurezza Plugin
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Resa
    Sicurezza Plugin

    Chiede al editor di impostare la selezione del cursor al valore dell'argomento.

Eventi

Proprietà

Metodi

GetLine

Sicurezza Plugin

Restituisce il testo della linea specificata. Quando non viene fornito alcun argomento, restituisce la linea della posizione del cursore attuale.

Parametri

lineIndex: number
Valore predefinito: "nil"

Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce il numero di righe nel documento attivo.


Restituzioni

Campioni di codice

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
Sicurezza Plugin

Restituisce l'istanza LuaSourceContainer esempio, se esiste, altrimenti nil .


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Ottiene il testo selezionato nell'editor, o una stringa vuota se non c'è una selezione.


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce l'ultima selezione conosciuta dello Script Editor nel formato: CursorLine, CursorChar, AnchorLine, AnchorChar . Se lo Script Editor non ha selezione, CursorLine == AnchorLine e CursorChar == AnchorChar .


Restituzioni

CursorLine, CursorChar, AnchorLine, AnchorChar.

GetSelectionEnd

Sicurezza Plugin

Ottiene la posizione e l'ancora della posizione del cursore. Se l'editor non ha selezionato nulla, sono gli stessi valori.


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Ottiene la posizione e l'ancora della posizione del cursore più piccola. Se l'editor non ha selezionato nulla, sono uguali al valore.


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce il testo dall'editor aperto. Deve essere chiamato con 0, 2 o 4 argomenti:

  • Se chiamato con 0 argomenti, ottiene l'intero contenuto dell'editor aperto.
  • Se chiamato con 2 argomenti, ottiene il testo del documento che inizia con ( startLine , startColumn ).
  • Se chiamato con 4 argomenti, ottiene il testo del documento che inizia con ( startLine , startColumn ) e finisce con ( endLine , 1> endColumn1> ).

Parametri

startLine: number
Valore predefinito: "nil"
startCharacter: number
Valore predefinito: "nil"
endLine: number
Valore predefinito: "nil"
endCharacter: number
Valore predefinito: "nil"

Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce i numeri di riga attualmente mostrati nell'editor. L'editor mostra le righe tra startLine e endLine, inclusa. La prima e l'ultima riga potrebbero essere visualizzate solo parzialmente. Ad esempio, potrebbero essere visualizzate solo le prime righe dell'ultima riga. Inoltre, la piegatura del codice potrebbe nascondere le righe tra startLine e endLine.


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce se l'editor ha selezionato del testo o meno.


Restituzioni

Campioni di codice

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

Sicurezza Plugin

Restituisce vero se il ScriptDocument rappresenta la barra dei comandi. La barra dei comandi ha regole e limitazioni speciali in questa API:

  • Studio crea la barra dei comandi prima di eseguire i plugin, quindi non sempre fire l'evento aperto, anche se chiude e riapre come Studio passa da un DataModel all'altro.
  • Non puoi modificare la barra dei comandi con EditTextAsync per motivi di sicurezza.

Restituzioni

Campioni di codice

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

Resa
Sicurezza Plugin

Le richieste che l'editor associato a questo documento Chiudere. Genera il thread corrente fino a quando l'editor risponde alla Richiesta. Se la funzione ha successo, restituisce (vero, Stringa) come una descrizione del problema.

Questa funzione non può chiudere la barra dei comandi.


Restituzioni

Campioni di codice

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

Resa
Sicurezza Plugin

Rimpiazza il testo nella gamma specificata da ( startLine , startColumn ) a ( endLine , 1> endColumn1>

Se la funzione ha successo, restituisce ( true , nil ).

La funzione throws un errore if:

  • La portata non è valida.
  • La gamma sarebbe in grado di schiacciare un personaggio unicode, per esempio sostituire solo alcuni dei bit del personaggio unicode.
  • Il newText stesso contiene UTF-8 non valido.

Se la funzione fallisce, restituisce (false, Stringa). La stringa è una descrizione del problema. Il tipo di fallimento più comune è un errore di versione. Ciò si verifica quando si tenta di chiamare EditTextAsync durante il tempo in cui il ScriptDocument non è in sincronia con i contenuti dell'editor. Se ciò dovesse accadere, puoi riprovare l'Modificare.

Parametri

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

Restituzioni

ForceSetSelectionAsync

Resa
Sicurezza Plugin

Chiede al editor di impostare la selezione del cursore ai valori di argomento. Entrambi gli argomenti di ancoraggio devono essere passati, o niente. Se niente è passato, allora ognuno di loro è predefinito essere lo stesso come l'argomento cursore corrispondente. L'editor potrebbe rifi

Parametri

cursorLine: number
cursorCharacter: number
anchorLine: number
Valore predefinito: "nil"
anchorCharacter: number
Valore predefinito: "nil"

Restituzioni

Campioni di codice

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

Resa
Sicurezza Plugin

Parametri

edits: Array

Restituzioni

RequestSetSelectionAsync

Resa
Sicurezza Plugin

Chiede al editor di impostare la selezione del cursor all'argomento. Entrambi gli argumenti di ancoraggio devono essere passati, o niente. Se niente è passato, allora ognuno di loro è predefinito essere lo stesso dell'argument cursor corrispondente. L'editor potrebbe rifiutare di aggiornare il cursor se il contenuto del testo della documentazione è cambiato, o il cursor si è spostato dal momento che la richiesta

Parametri

cursorLine: number
cursorCharacter: number
anchorLine: number
Valore predefinito: "nil"
anchorCharacter: number
Valore predefinito: "nil"

Restituzioni

Campioni di codice

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

Eventi

SelectionChanged

Sicurezza Plugin

Si attiva quando ScriptDocument cambia, incluso immediatamente dopo un cambiamento di testo.

Parametri

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

Campioni di codice

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

Sicurezza Plugin

Si attiva quando i numeri di riga mostrati nell'editor cambiano. Vedi ScriptDocument.GetViewport per i dettagli.

Parametri

startLine: number
endLine: number

Campioni di codice

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)