ScriptEditorService

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

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

ไม่สามารถสร้าง
บริการ
ไม่ซ้ำ

บริการนี้ใช้สำหรับการโต้ตอบกับตัวอินสแตนซ์ ScriptDocument

สรุป

วิธีการ

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

    ลบคำเรียกแบบเก่าที่ลงทะเบียนไว้ก่อนหน้านี้ด้วยชื่อ name

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

    ลบคำเรียกแบบเก่าที่ลงทะเบียนไว้ก่อนหน้านี้ด้วยชื่อ name

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

    กลับค่า ScriptDocument ที่เปิดตรงกับ LuaSourceContainer หรือปุ่มเริ่มต้นหากสคริปต์ที่ให้ไม่เปิด

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

    กลับไปที่เวลาแก้ไขสำหรับสคริปที่ให้

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

    กลับรายการของสคริปต์ที่เปิดอยู่ในขณะนี้ รวมถึงแถบคําสั่ง

  • RegisterAutocompleteCallback(name : string,priority : number,callbackFunction : function):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ลงทะเบียนคืนหนึ่ง autocomplete คืน callbackFunction ที่มีชื่อว่า name ด้วยความสามารถในการกรอกอัตโนมัติ priority .

  • RegisterScriptAnalysisCallback(name : string,priority : number,callbackFunction : function):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ลงทะเบียนการโอนความคิดเห็นของสคริปต์ callbackFunction ที่มีชื่อว่า name ด้วย priority

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

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

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

    สร้างเนื้อหาใหม่จากสคริปเก่าและปรับปรุงเครื่องมือเขียนสคริปต์หากมันเปิดอยู่หรือ Script ริงค์อินสแตนซ์หากเครื่องมือเขียนสคริปต์ถูกปิด

อีเวนต์

  • TextDocumentDidChange(document : ScriptDocument,changesArray : Variant):RBXScriptSignal
    การรักษาความปลอดภัยของปลั๊กอิน

    เพิ่มเพียงหลังจากการเปลี่ยนแปลง ScriptDocument

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

    จะเกิดขึ้นเพียงก่อนวัตถุ ScriptDocument จะถูกทำลายซึ่งเกิดขึ้นหลังจากที่เครื่องมือเว็บสกริปต์ปิด

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

    เกิดขึ้นเพียงหลังจากที่วัตถุ ScriptDocument นี้ได้รับการสร้างและมีส่วนเกี่ยวข้องกับบริการซึ่งเป็นส่วนหลังของเครื่องมือเลขานุกรมเปิดตัว

คุณสมบัติ

วิธีการ

DeregisterAutocompleteCallback

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

ลบคำเรียกแบบเก่าที่ลงทะเบียนไว้ก่อนหน้านี้ด้วยชื่อ name

พารามิเตอร์

name: string

ส่งค่ากลับ

void

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

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

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

ลบคำเรียกแบบเก่าที่ลงทะเบียนไว้ก่อนหน้านี้ด้วยชื่อ name

พารามิเตอร์

name: string

ส่งค่ากลับ

void

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

ScriptEditorService:DeregisterScriptAnalysisCallback

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

FindScriptDocument

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

กลับค่า ScriptDocument ที่เปิดตรงกับ LuaSourceContainer หรือปุ่มเริ่มต้นหากสคริปต์ที่ให้ไม่เปิด

พารามิเตอร์


ส่งค่ากลับ

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

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

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

กลับไปที่เวลาแก้ไขสำหรับสคริปที่ให้

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

พารามิเตอร์


ส่งค่ากลับ

GetScriptDocuments

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

กลับรายการของสคริปต์ที่เปิดอยู่ในขณะนี้ รวมถึงแถบคําสั่ง


ส่งค่ากลับ

Instances

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

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

ลงทะเบียนคืนหนึ่ง autocomplete คืน callbackFunction ที่มีชื่อว่า name ด้วยความสามารถในการกรอกอัตโนมัติ priority .

เมื่อเรียก Script Editor จะทำให้ autocomplete เรียกในลำดับความสามารถต่อไปด้วยคำขอและการตอบกลับของ autocomplete ตัวนี้ หลายคำตอบอาจแชร

callbackFunction พิมพ์: (Request: table, Response: table) -> table

ตาราง Request มีรูปแบบต่อไปนี้:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position คือตำแหน่งเลื่อนที่มีอินเด็กซ์เดียวที่คุณกําลังเสร็จสิ้น
  • textDocument.document คือ ScriptDocument ที่เปิดอยู่ หากมันมีอยู่
  • textDocument.script คือ LuaSourceContainer ที่คุณกําลังเสร็จสิ้นใน, ถ้ามันมีอยู่

หากมีทั้ง textDocument.document และ textDocument.script พวกเขาจะตรงกัน: req.textDocument.document:GetScript() == req.textDocument.script

ตารางตอบสนองมีรูปแบบต่อไปนี้:


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 เป็นรายการของไอเท็มเสร็จสิ้น ลำดับของรายการนี้ไม่สำคัญ และจะปรากฏในเว็บเป็นรายการผู้ใช้
  • Response.items[n].label คือเครื่องหมายการณ์ของรายการที่ปรากฏในเมนู autocomplete
  • Response.items[n].kind ระบุว่าชนิดของการอัปโหลดอัตโนมัตินี้คืออะไร โดยปกตินี่จะควบคุมไอคอนที่ให้กับไอเทมในเครื่องมือเรียกแชมป์ ไม่ใช่ทุกชนิดมีไอคอนที่เป็นเอกลักษณ
  • Response.items[n].tags ไอเท็มดูที่ Enum.CompletionItemTag สำหรับรายละเอียดเกี่ยวกับการใช้งานของพวกเขา
  • Response.items[n].details ไอเท็มสำหรับรายการปกติ สตริงนี้เป็นการแทนที่สัญลักษณ์ของพวกเขา สำหรับรายการที่ว่า
  • Response.items[n].documentation ระบุตัวองค์กายหลักของการเรียนรู้ในฟิลด์ value ของมัน documentation ปรากฏขึ้น แม้ว่าจะไม่มีรายละเอียดหรือความเหนือการโหลดก็ตาม ดังนั้นหน้าต
  • Response.items[n].overloads ระบุจำนวนการโหลดเกินขีดจำกัดของการเสร็จสิ้นฟังก์ชันอัตโนมัติ
  • Response.items[n].learnMoreLink ลิงค์ไปยังหน้าที่เกี่ยวข้องในคู่มือผู้สร้าง รหัสนี้ต้องเป็น https คำขอในการสร้าง roblox.com ไม่มีหน้าอื่นที่ปรากฏในเว็บเบราว์เซอร์
  • Response.items[n].codeSample ไอเท็มdocumentation ต้องเป็นไปไม่เปล่าเพื่อแสดงรายการนี้
  • Response.items[n].preselect หากเป็นเช่นนี้ ตัวแก้ไขจะเรียงลำดับรายการนี้ก่อนทุกรายการอื่นและเลือกมันสำหรับผู้ใช้โดยค่าเริ่มต้น ไม่มีผลกระทบถ้าเป็นปกติหรือหายไป
  • Response.items[n].textEdit หากมี, การยอมรับการเสร็จสิ้นใช้การแก้ไขข้อความนี้ - แทนที่สปอนระหว่างตำแหน่งเริ่มต้นและสิ้นสุดด้วย nText ใหม่

หากคันเรียกกลับมาด้วยผลลัพธ์ที่ไม่ถูกต้องหรือพบข้อผิดพลาด เว็บไซต์จะล้างตารางการตอบกลับที่แก้ไขแล้วและใช้รายการผลลัพธ์อัตโนมัติที่เรียบร้อย

พารามิเตอร์

name: string
priority: number
callbackFunction: function

ส่งค่ากลับ

void

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

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

ลงทะเบียนการโอนความคิดเห็นของสคริปต์ callbackFunction ที่มีชื่อว่า name ด้วย priority เมื่อ Studio วิเคราะห์สคริปต์, คุณสมบัติทั้งหมดจะเรียกในลำดับเรื่องเรียงลำด

ตารางคำขอมีรูปแบบต่อไปนี้ โดย script เป็น LuaSourceContainer ที่จะได้รับการวิเคราะห์


type Request = {
script: LuaSourceContainer?
}

ตารางตอบกลับมีรูปแบบต่อไปนี้ โดย diagnostics คือค่าย่อของตารางวินิจฉัย แต่ละตารางวินิจฉัยมีรายการด้านล่าง


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 เป็นตัวแทนของช่วงข้อความที่ควรได้รับการเน้นเป็นสีข้อความ/ตัวละครเริ่มต้นเน้นเป็นสีข้อความ/ตัวละครหยุดเน้นเป็นสีข้อความ/ตัวละคร
  • code เป็นชื่อแผงควบคุมสำหรับข้อความ
  • message เป็นข้อควรประกาศเพื่อแสดงสำหรับสาย ข้อควรประกาศนี้จะปรากฏในเครื่องมือช่วยเหลือเมื่อผู้ใช้วางเมาส์ของพวกเขาบนสายใน Scroll Editor
  • severity คือค่า Enum.Severity สำหรับผลการวินิจฉัย นี่จะกำหนดว่าผลการวินิจฉัยจะจัดประเภทในเครื่องมือการวิเคราะห์สคริปต์ใน Studio และวิธีการที่ข้อความถูกเน้นในเครื่องมือการวิเค
  • codeDescription ลิงค์ไปยังหน้าที่เกี่ยวข้องในคู่มือผู้สร้าง รหัสนี้ต้องเป็น https คำขอสู่ create.roblox.com ไม่มีรหัสอื่นที่ปรากฏในเว็บไซต์เดียวกัน

พารามิเตอร์

name: string
priority: number
callbackFunction: function

ส่งค่ากลับ

void

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

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

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

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

หากสคริปต์เปิดอยู่แล้ว ฟังก์ชันนี้ประสบความสำเร็จและเปลี่ยนแท็บไปยังเครื่องมือเลือกที่เกี่ยวข้อง

พารามิเตอร์


ส่งค่ากลับ

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

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

กลับเวลาการแก้ไข Script.Source สำหรับสคริปที่ให้

ฟังก์ชันนี้ใช้คอนเทนต์เก่าของสคริปต์เพื่อคํานวณเนื้อหาใหม่ของสคริปต์

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

คันเรียกอาจไม่สามารถให้ผลลัพธ์ได้ หากคันเรียกกลับมา nil คุณสามารถยกเลิกการดำเนินการได้ ฟังก์ชันนี้จะสร้างจนกว่าการดำเนินการจะยกเลิกหรือประสบความสำเร็จ

หากสคริปต์ไม่เปิดในเครื่องมือแก้ไข แหล่งที่มา


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

พารามิเตอร์

สคริปต์อินสแตนซ์ที่จะได้รับการปรับปรุง

callback: function

หน้าต่างที่ให้คืนเนื้อหาสคริปต์ใหม่


ส่งค่ากลับ

void

อีเวนต์

TextDocumentDidChange

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

การเพิ่มเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพียมเพี

{ range : { start : { line : number, character : number }, end : { line : number, character : number } }, text: string } ข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อควา

พารามิเตอร์

document: ScriptDocument
changesArray: Variant

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

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

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

เพิ่มเพียงเพื่อให้เป็นเวลาที่สั้นที่สุดก่อนที่ ScriptDocument วัตถุจะถูกทำลายซึ่งเกิดขึ้นหลังจากที่เครื่องมือเรือสกรีนปิด หลังจากเห

พารามิเตอร์

oldDocument: ScriptDocument

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

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

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

เกิดขึ้นเพียงหลังจากที่วัตถุ ScriptDocument นี้ได้รับการสร้างและมีส่วนเกี่ยวข้องกับบริการซึ่งเป็นส่วนหลังของเครื่องมือเลขานุกรมเปิดตัว

พารามิเตอร์

newDocument: ScriptDocument

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

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)