ScriptDocument

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Không Sao Chép

Một ScriptDocument 实例是 Studio Script Editor 文档的 một proxy. Nó khác với LuaSourceContainer mở trong editor như đại diện trạng thái tạm thời của một tập tin mở, v

Chính Editor Script tồn tại và thay đổi trên một chủ đề khác nhau than bất kỳ DataModel , vì vậy ScriptDocument sao chép Editor Script mở, nhưng nó khô

Sự hiện hữu của một ScriptDocument cho thấy rằng một tài liệu được mở trong Editor Script. Tất cả các ScriptDocument 实例 đều có ScriptEditorService như là cha. Mỗi 实例 đều tuân theo các quy định mã hóa sau đây:

  • Tất cả văn bản trong ScriptDocument được mã hóa bằng UTF-8.
  • Tất cả các chỉ mục dòng đều được xếp chỉ mục 1.
  • Tất cả các chỉ mục nhân vật đều được đếm bằng UTF-8, không phải bằng chữ viết, vì vậy cùng một cảnh báo từ TextBox.CursorPosition áp dụng: nhiều ký tự Unicode lấy hơn một dòng chữ.
  • Tất cả các phạm vi đều bao gồm vị trí xuất phát của chúng và bao gồm cả vị trí cuối cùng của chúng, vì vậy khi bắt đầu == kết thúc có nghĩa là một phạm vi trống.

Tất cả các API cho ScriptDocument đều ở cấp độ Plugin .

Tóm Tắt

Phương Pháp

  • GetLine(lineIndex : number?):string
    Bảo Mật Plugin

    Trả lại văn bản của dòng được xác định. Khi không cung cấp argument, trả lại dòng của vị trí cursors hiện tại.

  • Bảo Mật Plugin

    Trả lại số dòng trong tài liệu.

  • Bảo Mật Plugin

    Trả lại Class.LuaSourceContainer ví dụ / trường hợpnền tảng, nếu tồn tại, hoặc nil nếu không.

  • Bảo Mật Plugin

    Nhận chữ văn bản được chọn trong editor, hoặc là một chuỗi trống nếu không có lựa chọn.

  • Bảo Mật Plugin

    Trở lại lựa chọn cuối cùng của Editor Script trong định dạng: CursorLine, CursorChar, AnchorLine, AnchorChar . Nếu Editor Script không có lựa chọn, CursorLine == AnchorLineCursorChar == AnchorChar .

  • Bảo Mật Plugin

    Lấy vị trí lớn hơn của chuột và mắc. Nếu trình duyệt không có lựa chọn, chúng là giá trị tương tự.

  • Bảo Mật Plugin

    Lấy vị trí chuột nhỏ hơn và thắt dấu. Nếu trình duyệt không có lựa chọn, chúng có giá trị tương tự.

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    Bảo Mật Plugin

    Trả lại chữ từ mở chỉnh sửa.

  • Bảo Mật Plugin

    Trả lại các số dòng hiện đang được hiển thị trong biến đổi của editor.

  • Bảo Mật Plugin

    Trả lại có hay không có chọn văn bản nào trong editor.

  • Bảo Mật Plugin

    Trả về true nếu ScriptDocument đại diện cho Bar lệnh.

  • Sinh Lợi
    Bảo Mật Plugin

    Yêu cầu mà chỉnh sửa đơn giản đã kết hợp với tài liệu này đóng. Kết thúc nhãn chủ đề cho đến khi chỉnh sửa phản hồi lại yêu cầu.

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    Sinh Lợi
    Bảo Mật Plugin

    Thay thế văn bản trong phạm vi được quy định từ ( startLine , startColumn ) đến ( endLine , 1> endColumn1> ) với newText.

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Sinh Lợi
    Bảo Mật Plugin

    Yêu cầu editor đặt chọn curse của nó vào giá trị ngôn từ.

  • Sinh Lợi
    Bảo Mật Plugin
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    Sinh Lợi
    Bảo Mật Plugin

    Yêu cầu editor đặt chọn curse của nó vào giá trị ngôn từ.

Sự Kiện

Thuộc Tính

Phương Pháp

GetLine

Bảo Mật Plugin

Trả lại văn bản của dòng được xác định. Khi không cung cấp argument, trả lại dòng của vị trí cursors hiện tại.

Tham Số

lineIndex: number
Giá Trị Mặc Định: "nil"

Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Trả lại số dòng trong tài liệu đang chạy.


Lợi Nhuận

Mẫu mã

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
Bảo Mật Plugin

Trả lại Class.LuaSourceContainer ví dụ / trường hợpnền tảng, nếu tồn tại, hoặc nil nếu không.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Nhận chữ văn bản được chọn trong editor, hoặc là một chuỗi trống nếu không có lựa chọn.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Trở lại lựa chọn cuối cùng của Editor Script trong định dạng: CursorLine, CursorChar, AnchorLine, AnchorChar . Nếu Editor Script không có lựa chọn, CursorLine == AnchorLineCursorChar == AnchorChar .


Lợi Nhuận

CursorLine, CursorChar, AnchorLine, AnchorChar.

GetSelectionEnd

Bảo Mật Plugin

Lấy vị trí lớn hơn của chuột và mắc. Nếu trình duyệt không có lựa chọn, chúng là giá trị tương tự.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Lấy vị trí chuột nhỏ hơn và thắt dấu. Nếu trình duyệt không có lựa chọn, chúng có giá trị tương tự.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Trả về văn bản từ editor mở. Phải được gọi với 0, 2 hoặc 4引数:

  • Nếu được gọi với 0 argument, nhận toàn bộ nội dung của editor mở.
  • Nếu được gọi với 2引数, nhận text của tài liệu bắt đầu tại ( startLine , startColumn ).
  • Nếu được gọi với 4引数, nhận text của tài liệu bắt đầu tại ( startLine , startColumn ) và kết thúc tại ( endLine , 1> endColumn1> ).

Tham Số

startLine: number
Giá Trị Mặc Định: "nil"
startCharacter: number
Giá Trị Mặc Định: "nil"
endLine: number
Giá Trị Mặc Định: "nil"
endCharacter: number
Giá Trị Mặc Định: "nil"

Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Hiển thị số dòng hiện tại trong biến đổi của editor. Editor hiển thị các dòng giữa startLine và endLine, bao gồm. The first and last line might only display partially. Ví dụ, chỉ có topmost pixel của dòng cuối cùng có thể được hiển thị trên màn hình. Ngoài ra, code folding có thể hiển thị các dòng giữa startLine và endLine.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Trả lại có hay không có chọn văn bản nào trong editor.


Lợi Nhuận

Mẫu mã

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

Bảo Mật Plugin

Trả về true nếu ScriptDocument đại diện cho thanh Command. Thanh Command có các quy tắc và hạn chế đặc biệt trong API này:

  • Studio tạo ra thanh Bảng lệnh trước khi thiết lập các plugin, vì vậy nó không phải lúc nào cũng kích hoạt sự kiện đã mở, mặc dù nó đóng và mở lại như Studio chuyển qua DataModels.
  • Bạn không thể chỉnh sửa thanh EditTextAsync trong khi bạn đang bị mắc kẹt vì lý do an toàn.

Lợi Nhuận

Mẫu mã

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

Sinh Lợi
Bảo Mật Plugin

Yêu cầu mà chỉnh sửa viên liên kết với tài liệu này đóng. Kết thúc chủ đề hiện tại cho đến khi chỉnh sửa viên phản hồi lên yêu cầu. Nếu chức năng thành công, nó sẽ trả (đúng, nil) như một mô tả vấn đề. Nếu chức năng thất bại, nó sẽ trả (giả, chuỗi) như một mô tả vấ

Chức năng này không thể đóng cái thanh command.


Lợi Nhuận

Mẫu mã

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

Sinh Lợi
Bảo Mật Plugin

Thay thế văn bản trong phạm vi được quy định bằng ( startLine , startColumn ) đến ( <

Nếu hàm thành công, nó sẽ trả về ( true , nil ).

Hàm này ném một lỗi nếu:

  • Phạm vi không hợp lệ.
  • Phạm vi sẽ cắt một nhân vật unicode, ví dụ chỉ những ký tự của nhân vật unicode.
  • newText chính có chứa UTF-8 không hợp lệ.

Nếu hàm này thất bại, nó sẽ trả về ( false, chuỗi). string là một mô tả về vấn đề. loại lỗi phổ biến nhất là một lỗi bản sao. Điều này xảy ra khi bạn cố gắng gọi EditTextAsync trong khi ScriptDocument nằm ngoài tươ

Tham Số

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

Lợi Nhuận

ForceSetSelectionAsync

Sinh Lợi
Bảo Mật Plugin

Yêu cầu editor đặt lựa chọn curse của nó vào giá trị ngữ cảnh. Cả hai giá trị của các argument phải được truyền hoặc không. Nếu không được truyền, th

Tham Số

cursorLine: number
cursorCharacter: number
anchorLine: number
Giá Trị Mặc Định: "nil"
anchorCharacter: number
Giá Trị Mặc Định: "nil"

Lợi Nhuận

Mẫu mã

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

Sinh Lợi
Bảo Mật Plugin

Tham Số

edits: Array

Lợi Nhuận

RequestSetSelectionAsync

Sinh Lợi
Bảo Mật Plugin

Yêu cầu editor đặt lựa chọn curse của nó vào giá trị ngữ cảnh. Cả hai giá trị của các câu trỏ đều phải được truyền, hoặc không. Nếu không được truyền, thì chúng sẽ mặc định là giống nh

Tham Số

cursorLine: number
cursorCharacter: number
anchorLine: number
Giá Trị Mặc Định: "nil"
anchorCharacter: number
Giá Trị Mặc Định: "nil"

Lợi Nhuận

Mẫu mã

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

Sự Kiện

SelectionChanged

Bảo Mật Plugin

Lửa khi ScriptDocument thay đổi, bao gồm ngay cả sau khi thay đổi chữ.

Tham Số

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

Mẫu mã

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

Bảo Mật Plugin

Làm nổ khi các số dòng được hiển thị trong trình biên tập thay đổi. Xem ScriptDocument.GetViewport để biết chi tiết.

Tham Số

startLine: number
endLine: number

Mẫu mã

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)