ScriptDocument

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
ไม่ซ้ำ

ตัวอย่าง ScriptDocument เป็นโปรไฟล์ของเอกสารของ Studio Script Editor มันแตกต่างจาก LuaSourceContainer ที่เปิดในเอเดอร์ในที่มัน

เวิร์กเอ็ดที่มีตัวเองอยู่และเปลี่ยนแปลงในเส้นทางเส้นที่แตกต่างกันไม่ใช่ DataModel ใด ๆ ดังนั้

ความมีอยู่ของ ScriptDocument แสดงว่ามีเอกสารเปิดในเวรเอ๊กเซร์สคริปต์ ทุกตัวอย่างของ ScriptDocument มี ScriptEditorService เป็นพ่อของมัน แต่ละตัวอย่างปฏิบัติตามข้อกำหน

  • ข้อความทั้งหมดใน ScriptDocument ถูกเข้ารหัสด้วย UTF-8
  • ดัชนีทุกบรรทัดมี 1 ดัชนี
  • ดัชนีตัวละครทั้งหมดจะมีอินเด็กซ์เป็น 1 และนับ UTF-8 บาท, ไม่ใช่แกรฟเม, ดังนั้นคำเตือนเดียวกันจาก TextBox.CursorPosition จะใช้: ตัวอักษร Unicode จำนวนมากกว่าหนึ่งบาท.
  • ระยะทั้งหมดรวมถึงตำแหน่งเริ่มต้นและสิ้นสุดของพวกเขาดังนั้นการเริ่มต้น == สิ้นสุดจะหมายถึงระยะที่ว่างเปล่า

Class.ScriptDocument ทั้งหมด อยู่ในระดับความปลอดภัยของ เครื่องมือประยุกต์

สรุป

วิธีการ

  • GetLine(lineIndex : number?):string
    การรักษาความปลอดภัยของปลั๊กอิน

    กลับข้อความของบรรทัดที่กำหนด เมื่อไม่มีตัวอ้างให้ กลับข้อความของตำแหน่งเมาส์ปัจจุบัน

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับจำนวนบรรทัดในเอกสาร

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับไปที่ LuaSourceContainer อินสแตนซ์หรือ nil อย่างอื่น

  • การรักษาความปลอดภัยของปลั๊กอิน

    ได้รับข้อความที่เลือกในแก้ไขเนอร์ หรือข้อความว่างเปล่าหากไม่มีการเลือก

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับรายการเลือกครั้งล่าสุดของ Editor สคริปต์ในรูปแบบ: CursorLine, CursorChar, AnchorLine, AnchorChar หาก Editor ไม่มีรายการเลือกให้ CursorLine == AnchorLine และ CursorChar == AnchorChar .

  • การรักษาความปลอดภัยของปลั๊กอิน

    รับตำแหน่งของตัวอักษรใหญ่และอันคู่ หากเวิร์ดเปลี่ยนแปลงไม่มีตัวเลือก พวกเขาจะเป็นค่าเดียวกัน

  • การรักษาความปลอดภัยของปลั๊กอิน

    รับตำแหน่งของตัวอักษรที่เล็กกว่าและค่าดูดโดยตรง หากเว็บไซต์ไม่มีการเลือกพวกเขาจะเป็นค่าเดียวกัน

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    การรักษาความปลอดภัยของปลั๊กอิน

    กลับข้อความจากเครื่องมือแก้ไขแบบเปิด

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับเลขที่บรรทัดที่ปรากฏอยู่ในตอนนี้ในการเปลี่ยนแปลงของเรนเดอร์

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับว่ามีหรือไม่มีข้อความใด ๆ ที่เลือกไว้ในแก้ไข

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับ true หาก ScriptDocument เป็นตัวแทนของแถบคําสั่ง

  • ผลตอบแทน
    การรักษาความปลอดภัยของปลั๊กอิน

    คำขอที่เกี่ยวข้องกับเอกสารนี้ปิด ให้ผลตามที่เรียบร้อยจนกว่าเอดิเตอร์จะตอบกลับคำขอ

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    ผลตอบแทน
    การรักษาความปลอดภัยของปลั๊กอิน

    แทนที่ข้อความในขอบเขตที่กำหนดโดย ( startLine , startColumn ) ไปยัง ( endLine , 1> endColumn1> ) ด้วย newText

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    ผลตอบแทน
    การรักษาความปลอดภัยของปลั๊กอิน

    ขอให้เลือกเครื่องมือเลือกของเดียวกับค่าตัวอย่าง

  • ผลตอบแทน
    การรักษาความปลอดภัยของปลั๊กอิน
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    ผลตอบแทน
    การรักษาความปลอดภัยของปลั๊กอิน

    ขอให้เลือกเครื่องมือเลือกของเดียวกับค่าตัวอย่าง

อีเวนต์

  • SelectionChanged(positionLine : number,positionCharacter : number,anchorLine : number,anchorCharacter : number):RBXScriptSignal
    การรักษาความปลอดภัยของปลั๊กอิน

    เกิดขึ้นเมื่อสคริปต์เอกสารเปลี่ยนแปลง, รวมทั้งทันทีหลังจากการเปลี่ยนแปลงข้อความ

  • การรักษาความปลอดภัยของปลั๊กอิน

    เกิดขึ้นเมื่อเลขที่แสดงในแถบเลขในเครื่องมือเริ่มต้นเปลี่ยนแปลง

คุณสมบัติ

วิธีการ

GetLine

การรักษาความปลอดภัยของปลั๊กอิน

กลับข้อความของบรรทัดที่กำหนด เมื่อไม่มีตัวอ้างให้ กลับข้อความของตำแหน่งเมาส์ปัจจุบัน

พารามิเตอร์

lineIndex: number
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับจำนวนบรรทัดในเอกสารที่เปิดอยู่


ส่งค่ากลับ

ตัวอย่างโค้ด

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
การรักษาความปลอดภัยของปลั๊กอิน

กลับไปที่ LuaSourceContainer อินสแตนซ์หรือ nil อย่างอื่น


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

ได้รับข้อความที่เลือกในแก้ไขเนอร์ หรือข้อความว่างเปล่าหากไม่มีการเลือก


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับรายการเลือกครั้งล่าสุดของ Editor สคริปต์ในรูปแบบ: CursorLine, CursorChar, AnchorLine, AnchorChar หาก Editor ไม่มีรายการเลือกให้ CursorLine == AnchorLine และ CursorChar == AnchorChar .


ส่งค่ากลับ

จุดเริ่มต้นของเครื่องมือ, จุดเริ่มต้นของเครื่องมือ, จุดเริ่มต้นของเครื่องมือ, จุดเริ่มต้นของเครื่องมือ.

GetSelectionEnd

การรักษาความปลอดภัยของปลั๊กอิน

รับตำแหน่งของตัวอักษรใหญ่และอันคู่ หากเวิร์ดเปลี่ยนแปลงไม่มีตัวเลือก พวกเขาจะเป็นค่าเดียวกัน


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

รับตำแหน่งของตัวอักษรที่เล็กกว่าและค่าดูดโดยตรง หากเว็บไซต์ไม่มีการเลือกพวกเขาจะเป็นค่าเดียวกัน


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับข้อความจากเว็บเบราว์เมอร์ ต้องใช้ตัวอักษร 0, 2 หรือ 4 ตัวอักษร:

  • ถ้าเรียกด้วย 0 ตัวอักษร, รับเนื้อหาทั้งหมดของเวิร์ดเปเปอร์ที่เปิดกว้าง
  • ถ้าเรียกด้วย 2 อาร์กุญแจ, รับข้อความของเอกสารเริ่มต้นที่ ( startLine , startColumn )
  • ถ้าเรียกด้วย 4 อาร์กิวเมนต์, รับข้อความของเอกสารเริ่มต้นที่ ( startLine , startColumn ) และสิ้นสุดที่ ( endLine , 1> endColumn1> )

พารามิเตอร์

startLine: number
ค่าเริ่มต้น: "nil"
startCharacter: number
ค่าเริ่มต้น: "nil"
endLine: number
ค่าเริ่มต้น: "nil"
endCharacter: number
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับเลขเส้นที่ปัจจุบันที่แสดงในเมนูเปลี่ยนแปลง เมนูจะแสดงเส้นที่อยู่ระหว่างเริ่มต้นไลน์และสิ้นสุดไลน์ รวมทั้ง เส้นสุดของเส้นแรกและสุดอาจปรากฏบนหน้าจอ นอกจากนี้ กา


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับว่ามีหรือไม่มีข้อความใด ๆ ที่เลือกไว้ในแก้ไข


ส่งค่ากลับ

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

กลับ true หาก ScriptDocument เป็นตัวแทนของแถบคําสั่ง แถบคําสั่งมีกฎและข้อจํากัดพิเศษใน API นี้:

  • Studio สร้างแถบคําสั่งก่อนที่จะเรียกใช้ปลั๊กอินดังนั้นจึงไม่ได้เรียกเหตุการณ์ที่เปิดอยู่เสมอ แม้ว่ามันจะปิดและเปิดใหม่เมื่อ Studio เปลี่ยนจาก DataModels ไปยัง
  • คุณไม่สามารถแก้ไขแถบคําสั่งด้วย EditTextAsync เพื่อเหตุผลด้านความปลอดภัย

ส่งค่ากลับ

ตัวอย่างโค้ด

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

ผลตอบแทน
การรักษาความปลอดภัยของปลั๊กอิน

คำขอที่เกี่ยวข้องกับเอกสารนี้ปิด ให้ผลตามที่เดียวจนกว่าเอกสารจะตอบสนองต่อคำขอ หากคำฟังสำเร็จ มันจะกลับมา (ใช่, ไม่มี) เป็นคำอธิบายของปัญหา หากคำฟังล้มเหลว มันจะกลับมา (ใช่, ไม

คุณสมบัตินี้ไม่สามารถปิดแถบคําสั่ง


ส่งค่ากลับ

ตัวอย่างโค้ด

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

ผลตอบแทน
การรักษาความปลอดภัยของปลั๊กอิน

แทนที่ข้อความในขอบเขตที่กำหนดโดย ( startLine , startColumn ) ไปยัง ( <

หากคุณสมบัติตัวเรียบร้อย, มันจะกลับมา ( true , nil )

ฟังก์ชันจะทิ้งข้อผิดพลาดหาก:

  • ระยะไม่ถูกต้อง
  • ระยะนี้จะตัดตัวอักษรยูนิโคด เช่น เฉพาะส่วนของบาทหลวงของตัวอักษรยูนิโคดเท่านั้น
  • newText ตัวเอง มี UTF-8 ที่ไม่ถูกต้อง

หากฟังก์ชันล้มเหลวก็จะกลับมา ( false, string). ตัวสตริงเป็นคำอธิบายปัญหา ประเภทการล้มเหลวที่พบบ่อยที่สุดคือการจับคู่เวอร์ชัน เกิดขึ้นเมื่อคุณพยายามที่จะ

พารามิเตอร์

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

ส่งค่ากลับ

ForceSetSelectionAsync

ผลตอบแทน
การรักษาความปลอดภัยของปลั๊กอิน

ขอให้เลือกเลือกผู้เขียนของเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือกเลือ

พารามิเตอร์

cursorLine: number
cursorCharacter: number
anchorLine: number
ค่าเริ่มต้น: "nil"
anchorCharacter: number
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

ตัวอย่างโค้ด

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

ผลตอบแทน
การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

edits: Array

ส่งค่ากลับ

RequestSetSelectionAsync

ผลตอบแทน
การรักษาความปลอดภัยของปลั๊กอิน

ขอให้เวิร์ดเพลตตั้งค่าการเลือกตัวเลือกของเวิร์ดเพลตให้เป็นค่าตัวอักษรตามที่ระบุไว้ สองตัวอักษรต้องเป็นตัวอักษรที่ตรงกัน

พารามิเตอร์

cursorLine: number
cursorCharacter: number
anchorLine: number
ค่าเริ่มต้น: "nil"
anchorCharacter: number
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

ตัวอย่างโค้ด

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

อีเวนต์

SelectionChanged

การรักษาความปลอดภัยของปลั๊กอิน

เกิดขึ้นเมื่อสคริปต์เอกสารเปลี่ยนแปลง, รวมทั้งทันทีหลังจากการเปลี่ยนแปลงข้อความ

พารามิเตอร์

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

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

เกิดขึ้นเมื่อเลขเส้นที่ปรากฏในตัวแก้ไขเปลี่ยนแปลง ดู ScriptDocument.GetViewport สำหรับรายละเอียด

พารามิเตอร์

startLine: number
endLine: number

ตัวอย่างโค้ด

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)