Engine-Klasse
ScriptDocument
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Zusammenfassung
Methoden
AddReadOnlyReasonsAsync(reasons: {any}):() |
MultiEditTextAsync(edits: {any}):Tuple |
RemoveReadOnlyReasonsAsync(reasons: {any}):() |
ReviewableTextEditsAsync(changes: {any}):Tuple |
Events
SelectionChanged(positionLine: number,positionCharacter: number,anchorLine: number,anchorCharacter: number):RBXScriptSignal |
ViewportChanged(startLine: number,endLine: number):RBXScriptSignal |
API-Referenz
Methoden
AddReadOnlyReasonsAsync
Parameter
Rückgaben
()
Code-Beispiele
ScriptDocument:AddReadOnlyReasonsAsync()
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 not success then
warn(`Fehler beim Öffnen des Skriptdokuments: {err}`)
return
end
local scriptDocument = ScriptEditorService:FindScriptDocument(newScript)
-- Verwenden Sie einen Grundnamen, der einzigartig für Ihr Plugin ist, damit er nicht mit den Gründen anderer Plugins kollidiert
scriptDocument:AddReadOnlyReasonsAsync({ "MyPluginReview" })
print(`{scriptDocument.Name} ist schreibgeschützt: {scriptDocument:IsReadOnly()}`)CloseAsync
Rückgaben
Code-Beispiele
ScriptDocument:CloseAsync
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Finde das erste geöffnete Skriptdokument
for _, document in documents do
-- Die Befehlszeile kann nicht geschlossen werden, also wähle sie nicht aus
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Geschlossen {scriptDocument.Name}`)
else
warn(`Fehler beim Schließen von {scriptDocument.Name} weil: {err}`)
end
else
print("Keine offenen Skripte")
endEditTextAsync
ForceSetSelectionAsync
Rückgaben
Code-Beispiele
ScriptDocument:ForceSetSelectionAsync()
--!nocheck
-- Führen Sie den folgenden Code in der Eingabeaufforderung aus, während ein Skript geöffnet ist
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
-- Holen Sie sich den Text in der aktuellen Zeile des Cursors
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Zwingen Sie die gesamte Zeile Text auszuwählen
local success, err = scriptDocument:ForceSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Auswahl festgelegt!")
else
print(`Auswahl konnte nicht festgelegt werden, weil: {err}`)
end
else
print("Keine Skripte geöffnet")
endGetLine
Parameter
| Standardwert: nil |
Rückgaben
Code-Beispiele
ScriptDocument.SelectionChanged und ScriptDocument:GetLine()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus, während ein Skript geöffnet ist
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(`Ausgewählt: Zeile {positionLine}, Zeichen {positionCharacter}`)
print(`Anker: Zeile {anchorLine}, Zeichen {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Ausgewählter Zeileninhalt: {lineText}`)
end)
else
print("Keine Skripte geöffnet")
endGetLineCount
Rückgaben
Code-Beispiele
ScriptDocument:GetLineCount()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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(`Das Skript hat {lineCount} Zeilen!`)
else
print("Keine Skripte geöffnet")
endGetReadOnlyReasons
Rückgaben
{string}
Code-Beispiele
ScriptDocument:GetReadOnlyReasons()
local ScriptEditorService = game:GetService("ScriptEditorService")
for _, document in ScriptEditorService:GetScriptDocuments() do
local reasons = document:GetReadOnlyReasons()
if #reasons > 0 then
print(`{document.Name} ist schreibgeschützt wegen: {table.concat(reasons, ", ")}`)
end
endGetScript
Rückgaben
Code-Beispiele
ScriptDocument:GetScript()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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(`Aktuell geöffnetes Skript: {openScript:GetFullName()}`)
else
print("Keine Skripte geöffnet")
endGetSelectedText
Rückgaben
Code-Beispiele
ScriptDocument:HatAusgewähltenText() und :GetSelectedText()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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:HatAusgewähltenText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Aktuell ausgewählter Text: {selectedText}`)
else
print("Kein Text aktuell ausgewählt")
end
end)
else
print("Keine Skripte geöffnet")
endGetSelectionEnd
Rückgaben
Code-Beispiele
ScriptDocument:GetSelectionStart() und :GetSelectionEnd()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus, während ein Skript geöffnet ist
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(`Auswahlstart: Zeile {startLine}, Char {startCharacter}`)
print(`Auswahlende: Zeile {endLine}, Char {endCharacter}`)
else
print("Keine Skripte geöffnet")
endGetSelectionStart
Rückgaben
Code-Beispiele
ScriptDocument:GetSelectionStart() und :GetSelectionEnd()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus, während ein Skript geöffnet ist
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(`Auswahlstart: Zeile {startLine}, Char {startCharacter}`)
print(`Auswahlende: Zeile {endLine}, Char {endCharacter}`)
else
print("Keine Skripte geöffnet")
endGetText
Rückgaben
Code-Beispiele
ScriptDocument:GetText()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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(`Skriptinhalt: {text}`)
else
print("Keine Skripte geöffnet")
endGetViewport
Rückgaben
Code-Beispiele
ScriptDocument:GetViewport
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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(`Derzeit werden die Zeilen {firstLine} bis {lastLine} angezeigt`)
else
print("Keine Skripte geöffnet")
endHasSelectedText
Rückgaben
Code-Beispiele
ScriptDocument:HatAusgewähltenText() und :GetSelectedText()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus, während ein Skript geöffnet ist
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:HatAusgewähltenText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Aktuell ausgewählter Text: {selectedText}`)
else
print("Kein Text aktuell ausgewählt")
end
end)
else
print("Keine Skripte geöffnet")
endIsCommandBar
Rückgaben
Code-Beispiele
ScriptDocument:IsCommandBar()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlszeile aus
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if document:IsCommandBar() then
print("Befehlszeiledokument:", document)
end
endIsReadOnly
Rückgaben
Code-Beispiele
ScriptDocument:IsReadOnly()
local ScriptEditorService = game:GetService("ScriptEditorService")
for _, document in ScriptEditorService:GetScriptDocuments() do
if document:IsReadOnly() then
print(`{document.Name} ist schreibgeschützt`)
else
print(`{document.Name} ist bearbeitbar`)
end
endMultiEditTextAsync
RemoveReadOnlyReasonsAsync
Parameter
Rückgaben
()
Code-Beispiele
ScriptDocument:RemoveReadOnlyReasonsAsync()
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 not success then
warn(`Fehler beim Öffnen des Skriptdokuments: {err}`)
return
end
local scriptDocument = ScriptEditorService:FindScriptDocument(newScript)
scriptDocument:AddReadOnlyReasonsAsync({ "MyPluginReview", "MyPluginLocked" })
-- Der Editor bleibt schreibgeschützt, solange ein anderer Grund aktiv bleibt
scriptDocument:RemoveReadOnlyReasonsAsync({ "MyPluginReview" })
print(`Schreibgeschützt nach dem Entfernen eines Grundes: {scriptDocument:IsReadOnly()}`)
scriptDocument:RemoveReadOnlyReasonsAsync({ "MyPluginLocked" })
print(`Schreibgeschützt nach dem Entfernen aller Gründe: {scriptDocument:IsReadOnly()}`)RequestSetSelectionAsync
Rückgaben
Code-Beispiele
ScriptDocument:RequestSetSelectionAsync()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus, während ein Skript geöffnet ist
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
-- Holen Sie sich den Text in der aktuellen Zeile des Cursors
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Wählen Sie die gesamte Zeile Text aus
local success, err = scriptDocument:RequestSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Auswahl gesetzt!")
else
print(`Auswahl konnte nicht gesetzt werden, weil: {err}`)
end
else
print("Keine Skripte geöffnet")
endEvents
SelectionChanged
ScriptDocument.SelectionChanged(
Code-Beispiele
ScriptDocument.SelectionChanged und ScriptDocument:GetLine()
--!nocheck
-- Führen Sie den folgenden Code in der Befehlsleiste aus, während ein Skript geöffnet ist
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(`Ausgewählt: Zeile {positionLine}, Zeichen {positionCharacter}`)
print(`Anker: Zeile {anchorLine}, Zeichen {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Ausgewählter Zeileninhalt: {lineText}`)
end)
else
print("Keine Skripte geöffnet")
endViewportChanged
Code-Beispiele
Verbindung zu ScriptDocument.ViewportChanged
--!nocheck
--[[
Um es auszuführen:
1. Stellen Sie sicher, dass die Ausgabeansicht geöffnet ist
2. Führen Sie den folgenden Code in der Befehlszeile aus
3. Scrollen Sie im geöffneten Skriptfenster nach oben und unten
Ausgabe von Print-Anweisungen des ViewportChanged-Ereignisses erscheint in der Ausgabe
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Erstellen Sie Text, der sich über viele Zeilen erstreckt
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Erstellen Sie ein Skript, das den Dummy-Text enthält, und öffnen Sie es
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Fehler beim Öffnen des Skripts, weil: {err}`)
return
end
-- Holen Sie sich eine Referenz zum geöffneten Skript
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Viewport des Skripts geändert - Startzeile: {startLine}, Endzeile: {endLine}`)
end
-- Verbinden Sie das ViewportChanged-Ereignis mit der obigen Funktion, die die Start- und Endzeile des aktualisierten Viewports ausgibt
scriptDocument.ViewportChanged:Connect(onViewportChanged)