ScriptEditorService

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
Dịch Vụ
Không Sao Chép

Dịch vụ này được sử dụng để tương tác với ScriptDocument instances.

Tóm Tắt

Phương Pháp

Sự Kiện

Thuộc Tính

Phương Pháp

DeregisterAutocompleteCallback

void
Bảo Mật Plugin

Loại bỏ một hồ sơ trước đó đã đăng ký với tên name .

Tham Số

name: string

Lợi Nhuận

void

Mẫu mã

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

void
Bảo Mật Plugin

Loại bỏ một hồ sơ trước đó đã đăng ký với tên name .

Tham Số

name: string

Lợi Nhuận

void

Mẫu mã

ScriptEditorService:DeregisterScriptAnalysisCallback

local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")

FindScriptDocument

Bảo Mật Plugin

Trả lại ScriptDocument mở tương ứng với LuaSourceContainer , hoặc nil nếu script đã được mở không.

Tham Số


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
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)

GetEditorSource

Bảo Mật Plugin

Trả lại nguồn thời gian chỉnh sửa cho tập tin đã được cho phép.

Nếu script được mở trong Editor Script, phương thức này trả lại nội dung hiện đang được hiển thị trong editor. Nếu script không được mở trong editor, phương thức trả lại nội dung mà editor sẽ hiển thị nếu nó được mở. Nguồn thời gian chỉnh sửa không phải lú

Tham Số


Lợi Nhuận

GetScriptDocuments

Instances
Bảo Mật Plugin

Trả lại một dàn tài liệu ngôn tức thời đang mở, bao gồm cả thanh command.


Lợi Nhuận

Instances

Mẫu mã

Print the name of every script

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local scriptDocuments = ScriptEditorService:GetScriptDocuments()
for _, scriptDocument in scriptDocuments do
-- Prints the name of each script
if not scriptDocument:IsCommandBar() then
print(scriptDocument.Name)
end
end

RegisterAutocompleteCallback

void
Bảo Mật Plugin

Đăng ký một hàm chọn tự động callbackFunction có tên là name với ưu tiên priority .

Khi Editor Script gọi autocomplet, tất cả các hàm autocomplet đã đăng ký sẽ gọi theo thứ tự theo thứ tự ưu tiên với yêu cầu và phản hồi autoc

Cuộn hồi callbackFunction phải có đánh máysau: (Request: table, Response: table) -> table

Cột Request có hình dạng như sau:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position là vị trí chuột được tự động hoàn thành.
  • textDocument.document là một tập tin ScriptDocument mở, nếu nó tồn tại.
  • textDocument.scriptLuaSourceContainer bạn đang hoàn thành, nếu nó tồn tại.

Nếu cả hai textDocument.documenttextDocument.script đều hiện diện, thì chúng đều được đồng bộ với nhau: req.textDocument.document:GetScript() == req.textDocument.script

Cột trả lời có hình dạng như sau:


type Response = {
items: {
{
label: string, -- The label
kind: Enum.CompletionItemKind?,
tags: {Enum.CompletionItemTag}?,
detail: string?,
documentation: {
value: string,
}?,
overloads: number?,
learnMoreLink: string?,
codeSample: string?,
preselect: boolean?,
textEdit: {
newText: string,
replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
}?
}
}
}
  • Response.items là một danh sách các mục đã hoàn thành. Thứ tự của danh sách này không có ý nghĩa, và nó được thiết lập lại trong editor như màu mực của người dùng.
  • Response.items[n].label là nhãn của mục được hiển thị trong menu tự động hoàn thành.
  • Response.items[n].kind định nghĩa loại autocompletet này là gì. Chủ yếu điều này kiểm soát loại icon được cung cấp cho mục trong trình duyệt. Không tất cả các loại đều có một biểu tượngđộc đáo. Nếu không được định nghĩa, trình duyệt sử dụng biểu tượng"Vă
  • Response.items[n].tags định nghĩa một loạt các thẻ mô tả về món vật phẩmnày. Tham khảo Enum.CompletionItemTag để biết chi tiết về chức năng của họ.
  • Response.items[n].details specifies a string describing details about the completion vật phẩm. For default items, this is a string representation of their đánh máy. Note that, in order for the documentation widget to display, documentation must be present, but documentation.value may be empty.
  • Response.items[n].documentation specifies the main body of the documentation in its value field. documentation is present, even if value is empty, so the documentation window displays if either details or overloads are specified.
  • Response.items[n].overloads đặt ra số lượng quá tải của một chức năng autocompletion.
  • Response.items[n].learnMoreLink liên kết đến trang bị liên quan trên tài liệu doc của người tạo. URL này phải là một yêu cầu https để tạo ra.roblox.com; không có URL khác được hiển thị trong trình duyệt.
  • Response.items[n].codeSample định nghĩa một mẫu sử dụng của vật phẩmhoàn thành. documentation phải là non-Empty để hiển thị trường này.
  • Response.items[n].preselect Nếu đúng, trình soạn thảo sắp xếp mục này trước tất cả những người khác và chọn nó cho người dùng bằng cách mặc định. Không có hiệu ứng nếu đúng hoặc bị thiếu.
  • Response.items[n].textEdit Nếu hiện có, chấp nhận hoàn thành áp dụng hộp chỉnh sửa văn bản này - thay thế các khoảng trống giữa các vị trí bắt đầu và kết thúc với những văn bản mới.

Nếu một hàm bị gọi trả lại kết quả sai hoặc gặp lỗi, trình soạn thảo sẽ bỏ rơi bảng Responce đã được hiệu chỉnh và sử dụng danh sách kết quả tự động hoàn thành tích hợp.

Tham Số

name: string
priority: number
callbackFunction: function

Lợi Nhuận

void

Mẫu mã

ScriptEditorService:RegisterAutocompleteCallback ScriptEditorService:DeregisterAutocompleteCallback

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
type Request = {
position: {
line: number,
character: number,
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?,
},
}
type Response = {
items: {
{
label: string,
kind: Enum.CompletionItemKind?,
tags: { Enum.CompletionItemTag }?,
detail: string?,
documentation: {
value: string,
}?,
overloads: number?,
learnMoreLink: string?,
codeSample: string?,
preselect: boolean?,
textEdit: {
newText: string,
replace: {
start: { line: number, character: number },
["end"]: { line: number, character: number },
},
}?,
}
},
}
local autocompleteCallback = function(request: Request, response: Response): Response
local item = {
label = "foo",
preselect = true,
}
table.insert(response.items, item)
return response
end
ScriptEditorService:RegisterAutocompleteCallback("foo", 1, autocompleteCallback)
-- To deregister the callback, run the following code in the Command Bar
ScriptEditorService:DeregisterAutocompleteCallback("foo")

RegisterScriptAnalysisCallback

void
Bảo Mật Plugin

Đăng ký một hành động Phân tích Script callbackFunction có tên name với priority . Khi Phân tích Script ở Studio chạy, tất cả các hành động đăng ký được gọi theo thứ tự theo thứ tự. Mỗi hành động đăng ký đều được yêu cầu trả

Bảng yêu cầu có định dạng như sau, scriptLuaSourceContainer được phân tích.


type Request = {
script: LuaSourceContainer?
}

Bảng trả lời có các hình dạng sau đây, trong đó diagnostics là một bảng trả lời. Mỗi bảng trả lời có các hàng được liệt kê dưới đây.


type Response = {
diagnostics: {
{
range: {
start: {
line: number,
character: number,
},
["end"]: {
line: number,
character: number,
}
},
code: string?,
message: string,
severity: Enum.Severity?,
codeDescription: { href: string }?
}
}
}
  • range đại diện cho một phạm vi văn bản mà nên nhấn mạnh bởi linter, cung cấp những dòng/nhân vật để bắt đầu nhấn mạng và những dòng/nhân vật để dừng nhấn mạng.
  • code là một nhãn cho thông tin nhắn.
  • message là một thông báo cho dòng. Điều này cũng sẽ xuất hiện trên một mẫu khi người dùng giữ chuột của họ trên dòng trong Trình biên tập Ngôn từ.
  • severity là một giá trị Enum.Severity cho điều kiện di chẩn. Điều này xác định cách di chẩn được phân loại trong công cụ phân tích script trong Studio, cũng như cách nhận xét được nhấn màu trong công cụ trình chỉnh script trong Studio.
  • codeDescription liên kết đến trang liên quan trên tài liệu của người tạo. URL này phải là một yêu cầu https để create.roblox.com; không có URL khác được hiển thị trong trình duyệt.

Tham Số

name: string
priority: number
callbackFunction: function

Lợi Nhuận

void

Mẫu mã

ScriptEditorService:RegisterScriptAnalysisCallback

type Request = {
["script"]: LuaSourceContainer,
}
type Response = {
diagnostics: {
{
range: {
start: {
line: number,
character: number,
},
["end"]: {
line: number,
character: number,
}
},
code: string?,
message: string,
severity: Enum.Severity?,
codeDescription: { href: string }?,
}
}
}
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:RegisterScriptAnalysisCallback("foo", 1, function(
Req : Request): Response
local response = {
diagnostics = {}
}
local lineNo = 1
-- Iterate line by line
for text, newline in Req.script.Source:gmatch("([^\r\n]*)([\r\n]*)") do
local startIndex, endIndex = string.find(text, "Foo")
if startIndex and endIndex then
table.insert(response.diagnostics, {
range = {
["start"] = {
line = lineNo,
character = startIndex,
},
["end"] = {
line = lineNo,
character = endIndex,
},
},
code = "FooFinder",
message = "Foo found here!",
severity = Enum.Severity.Warning,
})
end
lineNo = lineNo + #newline:gsub("\n+", "\0%0\0"):gsub(".%z.", "."):gsub("%z", "")
end
return response
end)

OpenScriptDocumentAsync

Sinh Lợi
Bảo Mật Plugin

Yêu cầu mà một Editor Skript mở script được chỉ định. Trả lại (đúng, nil) nếu yêu cầu thành công. Trả lại (giả, chuỗi) nếu yêu cầu thất bại, với một chuỗi mô tả vấn đề.

Nếu script đã mở, hành động này thành công và chuyển tùy chỉnh sang editor liên kết.

Tham Số


Lợi Nhuận

Mẫu mã

ScriptEditorService:OpenScriptDocumentAsync

--!nocheck
-- Run the following code in the Command Bar
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 success then
print("Opened script document")
else
print(`Failed to open script document: {err}`)
end

UpdateSourceAsync

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

Lại thời gian chỉnh sửa Script.Source cho script đó.

Hàm này gọi lại hồi gọi đã được sử dụng trong nội dung cũ của script để tính toán nội dung mới của script.

Nếu script được mở trong Editor Script, thì nó sẽ ra một yêu cầu đối với editor để nâng cấp nguồn của nó. Editor có thể từ chối yêu cầu này nếu độ tuổi Script.Source đã lỗi với phiên bản người dùng khi gọi chức năng này

Hàm đó có thể không trả kết quả. Nếu hàm đó trả lại nil, hoạt động sẽ bị huỷ. Đây là hàm đến khi hoạt động được huỷ hoặc thành công.

Nếu script không được mở trong trình biên tập, nội dung mới sẽ được cập nhật lên nguồn script, which is the text the editor would display if it is opened.


local ses = game:GetService('ScriptEditorService')
ses:UpdateSourceAsync(Workspace.Script, function(oldContent)
return oldContent .. " World!"
end)

Tham Số

Cập nhật nội dung tập lệnh.

callback: function

Chức năng để trả lại nội dung mới của script.


Lợi Nhuận

void

Sự Kiện

TextDocumentDidChange

Bảo Mật Plugin

Lửa chỉ sau khi một ScriptDocument thay đổi. The textChanged is an array of cấu trúc thay đổi của hình dạng:

{ range : { start : { line : number, character : number }, end : { line : number, character : number } }, text: string }

Tham Số

document: ScriptDocument
changesArray: Variant

Mẫu mã

ScriptEditorService.TextDocumentDidChange

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Changed", scriptDocument, changes)
end)

TextDocumentDidClose

Bảo Mật Plugin

Lửa chỉ đơn giản là ScriptDocument đối tượng được tiêu diệt, xảy ra ngay sau khi editor script đóng cửa. Sau sự kiện này, ScriptDocument đi vào trạng thái "Đóng cửa", và thử gọi các phương thức củ

Tham Số

oldDocument: ScriptDocument

Mẫu mã

ScriptEditorService.TextDocumentDidClose

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Closed", scriptDocument)
end)

TextDocumentDidOpen

Bảo Mật Plugin

Lửa chỉ sau khi một ScriptDocument đối tượng được tạo và liên quan với dịch vụ, xảy ra ngay sau khi trình biên tập script mở.

Tham Số

newDocument: ScriptDocument

Mẫu mã

ScriptEditorService.TextDocumentDidOpen

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Opened", scriptDocument)
end)