ScriptDocument

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Çoğaltılmamış

Bir ScriptDocument örneği, bir Studio Kod Dizini'nin dokümanının bir projesidir. Onun LuaSourceContainer ile açıldığı editordeki açık bir belgeyi temsil ediyor ve onun temsili bir

Script Editor'ın kendisi mevcut ve herhangi bir DataModel , farklı bir subüsteğinde değiştirilmiş, bu yüzden ScriptDocument kopyaları açık Script Editor'ı yeniden oluşturur, ancak a

Bir ScriptDocument varlığı, bir belgenin Script Editor'da açıldığını gösterir. Tüm ScriptDocument instanslarının ebeveyni ScriptEditorService dir. Her instans, aşağıdaki kodlama kurallarına uyar:

  • Class.ScriptDocument içindeki tüm metin UTF-8 kodlanmıştır.
  • Tüm satır indeksleri 1-indexedir.
  • Tüm karakter indeksleri 1-indexed ve UTF-8 byteleri sayılır, not графическимler, bu yüzden aynı uyarı TextBox.CursorPosition 'dan geçerlidir: birçok Unicode karakter bir byteden fazlasını alır.
  • Tüm menzillerin başlangıç pozisyonu ve son pozisyonu dahil olmak üzere, start == end, boş bir menzil olmasını sağlar.

Tüm ScriptDocument API'leri Eklentide güvenlik seviyesindedir.

Özet

Yöntemler

  • GetLine(lineIndex : number?):string
    Eklenti Güvenliği

    Belirli satırın metnini iade eder. Bir argüman sağlanmadığında, mevcut kurumsal pozisyonun satırını iade eder.

  • Eklenti Güvenliği

    Dokümdeki satır sayısını iade eder.

  • Eklenti Güvenliği

    Eğer mevcutsa, LuaSourceContainer alt yanını döndürür, durumtakdirde nil .

  • Eklenti Güvenliği

    Seçim yoksa, metni editördeki seçili alanın içeriğini alır veya boş bir yazı ifadesi alır.

  • Eklenti Güvenliği

    Script Editor'ın son seçimini biçimde iade eder: CursorLine, CursorChar, AnchorLine, AnchorChar. Eğer Script Editor'ın seçimi yoksa, CursorLine == AnchorLine ve CursorChar == AnchorChar .

  • Eklenti Güvenliği

    Kurşör pozisyonunun ve anka kısmının daha büyüğünü alır. Eğer editorin seçeneği yoksa, aynı değerlerdir.

  • Eklenti Güvenliği

    Kurşör pozisyonunun ve bağlantının daha küçüğünü alır. Eğer editorin seçeneği yoksa, aynı değerlerdir.

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    Eklenti Güvenliği

    Açık editordan döndürür text.

  • Eklenti Güvenliği

    Editor değişikliğinde görüntülenen hattın numaralarını iade eder.

  • Eklenti Güvenliği

    Editörün herhangi bir metni seçip seçmediğini döndürür.

  • Eklenti Güvenliği

    Komut çubuğunu temsil eden ScriptDocument gerçekten döndürür.

  • Bekletir
    Eklenti Güvenliği

    Dokümanla ilgili olan istekliler kapatılır. Yazılımın isteğe cevap verene kadar mevcut aşkını verir.

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    Bekletir
    Eklenti Güvenliği

    Yazıyı belirlenen menzilden ( startLine , startColumn ) ile ( endLine , 1> endColumn1> ) yeni yazı ile değiştirir.

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Bekletir
    Eklenti Güvenliği

    Editörün kuruluş seçimini argüman değerlerine ayarlanmasını ister.

  • Bekletir
    Eklenti Güvenliği
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Bekletir
    Eklenti Güvenliği

    Editörün kuruluş seçimini argüman değerlerine ayarlanmasını ister.

Etkinlikler

Özellikler

Yöntemler

GetLine

Eklenti Güvenliği

Belirli satırın metnini iade eder. Bir argüman sağlanmadığında, mevcut kurumsal pozisyonun satırını iade eder.

Parametreler

lineIndex: number
Varsayılan değer: "nil"

Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Aktif belgedeki satır sayısını iade eder.


Dönüşler

Kod Örnekleri

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
Eklenti Güvenliği

Eğer mevcutsa, LuaSourceContainer alt yanını döndürür, durumtakdirde nil .


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Seçim yoksa, metni editördeki seçili alanın içeriğini alır veya boş bir yazı ifadesi alır.


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Script Editor'ın son seçimini biçimde iade eder: CursorLine, CursorChar, AnchorLine, AnchorChar. Eğer Script Editor'ın seçimi yoksa, CursorLine == AnchorLine ve CursorChar == AnchorChar .


Dönüşler

CursorLine, CursorChar, AnchorLine, AnchorChar.

GetSelectionEnd

Eklenti Güvenliği

Kurşör pozisyonunun ve anka kısmının daha büyüğünü alır. Eğer editorin seçeneği yoksa, aynı değerlerdir.


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Kurşör pozisyonunun ve bağlantının daha küçüğünü alır. Eğer editorin seçeneği yoksa, aynı değerlerdir.


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Açık editordan metin döndürür. 0, 2 veya 4 arguyla çağrılmalıdır:

  • 0 arguyla çağrılırsa, açık editorin içeriğini alır.
  • 2 argümanla çağrılırsa, belge başlangıcındaki metni alır ( startLine , startColumn ).
  • 4 argümanla çağrılırsa, belgesin başlangıcındaki metni alır ( startLine , startColumn ) ve bitişindeki metni alır ( endLine , 1> endColumn1> ).

Parametreler

startLine: number
Varsayılan değer: "nil"
startCharacter: number
Varsayılan değer: "nil"
endLine: number
Varsayılan değer: "nil"
endCharacter: number
Varsayılan değer: "nil"

Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Düzenleyici değişikliğinde görüntülenen satır numaralarını içerir. Düzenleyici, başlangıç çizgisi ve son çizgisi arasındaki satır numaralarını gösterir, dahil. İlk ve son satır sadece parçalanabilir gösterilir. Örneğin, sadece son satırın üst kısmı ekranda görüntülenebilir. Ayrıca, kod katlanması kayıtlarını başlangı


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Editörün herhangi bir metni seçip seçmediğini döndürür.


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Class.ScriptDocument Komut Barını temsil ediyorsa geri döndürür. Komut Barında bu API'de özel kurallar ve sınırlamalar vardır:

  • Studio, eklentileri çalıştırmadan önce Komut Kutusu oluşturur, bu yüzden Studio, DataModels arasındaki geçişler sırasında kapatılır ve yeniden açılır.
  • Güvenlik nedeniyle EditTextAsync ile Komut çubuğunu düzenleyemezsiniz.

Dönüşler

Kod Örnekleri

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

Bekletir
Eklenti Güvenliği

Düzenleyici bu belgeyle ilgili istekleri kapatır. İstek yanıtlanana kadar mevcut olan çekirdeği kapatır. Eğer işlev başarılıysa, (doğru, boş) olarak geri döndürür. Eğer işlev başarısızysa, (yanlış, dizi) olarak hata açıklaması için döndürür.

Bu işlev, komut çubuğunu kapatmaz.


Dönüşler

Kod Örnekleri

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

Bekletir
Eklenti Güvenliği

Yazıyı belirli menzilden ( startLine , startColumn ) ile ( endLine , 1> endColumn1> ) ar

Eğer işlev başarılıysa, şu şekilde döndüğüne göre ( true , nil ).

Eğer işlev bir hata oluşturur:

  • Menzil geçersiz.
  • Menzil, bir Unicode karakterini dilimleyecekti, örneğin sadece bir Unicode karakterinin bazı bytelerini değiştir.
  • newText kendisi geçersiz UTF-8 içerir.

Eğer işlev başarısız olursa, bir (false, dizi) döndürür. Bu, bir versiyon uyumsuzlığıdır. En yaygın hata türü, bir versiyon uyumsuzlığıdır. Bu, ScriptDocument ile içerikleriniz arasında bir uyumsuzlık olduğunda deneyin editiyor. Bu durumda, edit'i

Parametreler

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

Dönüşler

ForceSetSelectionAsync

Bekletir
Eklenti Güvenliği

Editörün cursor seçimini argüman değerlerine ayarlamasını ister. Bu, bağlantı argümanları her ikisi de değer olmalıdır, ya da hiçbiri. Eğer hiçbiri değer değilse, kurucu argümanı olmalıdır. Editor, met

Parametreler

cursorLine: number
cursorCharacter: number
anchorLine: number
Varsayılan değer: "nil"
anchorCharacter: number
Varsayılan değer: "nil"

Dönüşler

Kod Örnekleri

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

Bekletir
Eklenti Güvenliği

Parametreler

edits: Array

Dönüşler

RequestSetSelectionAsync

Bekletir
Eklenti Güvenliği

Editörün cursor seçimini argüman değerlerine ayarlamasını ister. Bu ikisi de bağlantı argümanları olmalıdır veya hiçbiri. Eğer hiçbiri bağlantı argümanı olmazsa, kuralların aksine olur. Editor, metin belgesinin değiştirildiğinde veya cursor hareket ettirildiğinde kuralların a

Parametreler

cursorLine: number
cursorCharacter: number
anchorLine: number
Varsayılan değer: "nil"
anchorCharacter: number
Varsayılan değer: "nil"

Dönüşler

Kod Örnekleri

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

Etkinlikler

SelectionChanged

Eklenti Güvenliği

ScriptDocument'ın değişmesi durumunda, tüm metin değişikliklerinden hemen sonra yanar.

Parametreler

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

Kod Örnekleri

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

Eklenti Güvenliği

Düzenleyicinde görüntülenen satır numaraları değiştirdiğinde ateşlenir. Ayrıntılar için ScriptDocument.GetViewport bakın.

Parametreler

startLine: number
endLine: number

Kod Örnekleri

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)