ScriptEditorService

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa
Bez replikacji

Ta usługa jest używana do wchodzenia w interakcję z instancjami ScriptDocument.

Podsumowanie

Metody

Zdarzenia

Właściwości

Metody

DeregisterAutocompleteCallback

()
Zabezpieczenia dodatku plug-in

Usuwa wcześniej zarejestrowany powrót z nazwą name.

Parametry

name: string
Wartość domyślna: ""

Zwroty

()

Przykłady kodu

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

()
Zabezpieczenia dodatku plug-in

Usuwa wcześniej zarejestrowany powrót z nazwą name.

Parametry

name: string
Wartość domyślna: ""

Zwroty

()

Przykłady kodu

ScriptEditorService:DeregisterScriptAnalysisCallback

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

FindScriptDocument

Zabezpieczenia dodatku plug-in

Zwraca otwarte ScriptDocument odpowiadające danemu LuaSourceContainer lub nil jeśli dany skrypt nie jest otwarty.

Parametry

Wartość domyślna: ""

Zwroty

Przykłady kodu

ScriptDocument: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

Demonstrates using ScriptDocument.ViewportChanged to print the start and end line of the script's viewport when it changes.

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

Zabezpieczenia dodatku plug-in

Zwraca źródło czasu edycji dla podanego skryptu.

Jeśli skrypt jest otwarty w edytorze skryptów Script Editor, metoda ta zwraca tekst wyświetlany obecnie w edytorze.Jeśli skrypt nie jest otwarty w edytorze, metoda zwraca tekst, który edytor wyświetliłby, gdyby został otwarty.Źródło czasu edycji nie zawsze jest zgodne z właściwością Script.Source.

Parametry

Wartość domyślna: ""

Zwroty

GetScriptDocuments

Instances
Zabezpieczenia dodatku plug-in

Zwraca tablicę otwartych obecnie dokumentów skryptowych, w tym pasek poleceń.


Zwroty

Instances

Przykłady kodu

Gets all script documents in the place with ScriptEditorService:GetScriptDocuments() and prints their names.

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

()
Zabezpieczenia dodatku plug-in

Rejestruje powrotną funkcję autouzupełniania callbackFunction o nazwie name z priorytetem priority.

Kiedy edytor skryptów uruchamia autouzupełnianie, wszystkie zarejestrowane wezwania do autouzupełniania są wywoływane w kolejności rosnącego priorytetu z żądaniem i odpowiedzią autouzupełniania.Wiele powrotów może dzielić priorytet, ale następnie kolejność ich wezwania jest nieprzewidywalna.Każdy powrót ma na celu zwrócenie tablicy odpowiedzi z tym samym formatem, co tablica wejściowa odpowiedzi.Wezwania powrotne nie powinny występować.Pierwszy wezwany powrót do wezwania otrzymuje odpowiedź zewnętrznego autouzupełnienia jako swoją tabelę odpowiedzi, a kolejne powroty otrzymują wyjście poprzedniego powrotu jako swoją tabelę odpowiedzi.Wezwania powrotne mogą modyfikować przekazany stół lub zwracać nowy stół o tym samym formacie.

The callbackFunction musi mieć następujący wpisywać: (Request: table, Response: table) -> table

Tabela żądań ma następujący format:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position to pozycja kurora o jednym indeksie, w której wypełniasz automatycznie.
  • textDocument.document to otwarty ScriptDocument kończysz, jeśli istnieje.
  • textDocument.script jest to LuaSourceContainer, które uzupełniasz, jeśli istnieje.

Jeśli oba textDocument.document i textDocument.script są obecne, to odpowiadają sobie nawzajem: req.textDocument.document:GetScript() == req.textDocument.script

Tabela odpowiedzi ma następujący format:


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,
insert: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
}?
}
}
}
  • Response.items to jest tablica elementów ukończenia. Porządek tej tablicy jest nieistotny i odnosi się do edytora, gdy użytkownik wpisuje.
  • Response.items[n].label to etykieta przedmiotu, który wyświetla się w menu autokompletowania.
  • Response.items[n].kind określa, jakiego typu przedmiot jest kompletowany automatycznie.Głównie kontroluje to ikonę przypisaną do przedmiotu w edytorze.Nie wszystkie rodzaje mają unikalny ikona.Jeśli nie zostanie określone, edytor używa ikony "Tekst".Nieobsługiwane rodzaje domyślnie wyświetlają ikona"Właściwość".
  • Response.items[n].tags określa array tagów opisujący ten przedmiotukończenia. Zobacz Enum.CompletionItemTag dla szczegółów ich funkcji.
  • Response.items[n].details określa ciąg opisujący szczegóły dotyczące elementu zakończeniaDla domyślnych przedmiotów jest to reprezentacja ciągu ich wpisywać.Zauważ, że aby wyświetlić widget dokumentacji, documentation musi być obecny, ale documentation.value może być pusty.
  • Response.items[n].documentation określa główne ciało dokumentacji w jej polu value.documentation jest obecny, nawet jeśli wartość jest pusta, więc okno dokumentacji wyświetla się, jeśli zostaną określone szczegóły lub obciążenia.
  • Response.items[n].overloads określa liczbę przeciążeń automatycznego ukończenia funkcji
  • Response.items[n].learnMoreLink linki do odpowiedniej strony na dokumentach twórcy.Ta URL musi być żądaniem https stworzenia create.roblox.com; żadne inne URL-e nie wyświetlają się w edytorze.
  • Response.items[n].codeSample określa próbne użycie przedmiotukończenia. documentation musi być niepróżni, aby wyświetlić to pole.
  • Response.items[n].preselect Jeśli prawda, edytor sortuje ten element zakończenia przed wszystkimi innymi i wybiera go domyślnie dla użytkownika. Żaden efekt, jeśli jest fałszywy lub brakuje.
  • Response.items[n].textEdit Jeśli istnieje, akceptowanie ukończenia stosuje edycję tekstu - wstawienie lub zastąpienie odcinka między pozycjami początku i końca nowym tekstem.

Jeśli powrót wezwania zwraca nieprawidłowy wynik lub występuje błąd, edytor odrzuca zmienioną tabelę odpowiedzi i korzysta z listy wyników autouzupełniania zbudowanej domyślnie.

Parametry

name: string
Wartość domyślna: ""
priority: number
Wartość domyślna: ""
callbackFunction: function
Wartość domyślna: ""

Zwroty

()

Przykłady kodu

ScriptEditorService:RegisterAutocompleteCallback ScriptEditorService:DeregisterAutocompleteCallback

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

()
Zabezpieczenia dodatku plug-in

Rejestruje wezwanie do analizy skryptu callbackFunction o nazwie name z priority.Kiedy analiza skryptów w Studio zostanie uruchomiona, wszystkie zarejestrowane powroty wezwane są w kolejności rosnącego priorytetu.Każdy powrót ma na celu zwrócenie tablicy odpowiedzi pasującej do formatu określonego poniżej.Wezwania powrotne nie powinny występować.

Tabela żądań ma następujący format, w którym script jest LuaSourceContainer, który ma zostać przeanalizowany.


type Request = {
script: LuaSourceContainer?
}

Tabela odpowiedzi ma następujący format, w którym diagnostics jest tablicą diagnostyczną. Każda tablica diagnostyczna ma wpisy wymienione poniżej.


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 reprezentuje zakres tekstu, który powinien zostać wyróżniony przez linter, dostarczając linię/postać, od której należy rozpocząć wyróżnianie, oraz linię/postać, którą należy zakończyć wyróżnianie.
  • code jest etykietą dla wiadomość.
  • message jest to ostrzeżenie, które ma być wyświetlone dla linii.Pojawi się to również w powiadomieniu o narzędziu, gdy użytkownik przewija kursor nad linią w edytorze skryptów.
  • severity jest wartością Enum.Severity dla diagnostyki.To określa, w jaki sposób diagnoza jest kategoryzowana w narzędziu analizy skryptów w Studio, a także sposób, w jaki tekst jest podświetlany w edytorze skryptów.
  • codeDescription linki do odpowiedniej strony na dokumentach twórcy. Ten URL musi być żądaniem https do create.roblox.com ; żadne inne URL-e nie wyświetlają się w edytorze.

Parametry

name: string
Wartość domyślna: ""
priority: number
Wartość domyślna: ""
callbackFunction: function
Wartość domyślna: ""

Zwroty

()

Przykłady kodu

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

Wynik
Zabezpieczenia dodatku plug-in

Żądania, w których edytor skryptów otwiera określony skrypt.Zwraca (true, nil), jeśli wniosek się powiedzie.Zwraca (false, string) w przypadku niepowodzenia żądania, z ciągiem opisującym problem.

Jeśli skrypt jest już otwarty, ta funkcja powoduje powodzenie i przełącza zakładki do powiązanego edytora.

Parametry

Wartość domyślna: ""

Zwroty

Przykłady kodu

ScriptEditorService: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

()
Wynik
Zabezpieczenia dodatku plug-in

Zwraca czas edycji Script.Source

Funkcja ta wywołuje przekazany powrót za pomocą starej zawartości skryptu, aby obliczyć nową zawartość skryptu.

Jeśli skrypt jest otwarty w Edytorze skryptów, wysyła żądanie do edytora, aby zaktualizował jego kod źródłowy.Edytor może odrzucić tę aktualizację, jeśli właściwość Script.Source była przestarzała w wersji użytkownika skryptu, gdy funkcja ta została wywołana, w takim przypadku wezwanie powrotne zostanie ponowione, a próba zostanie powtórzona.

Wezwanie może nie zwrócić.Jeśli powrót wezwania zwraca nil, operacja jest anulowana.Ta funkcja zostanie wywołana do czasu, gdy operacja zostanie anulowana lub zakończy się sukcesem.

Jeśli skrypt nie jest otwarty w edytorze, nowe aktualizacje zawartości zostaną dodane do kod źródłowyskryptu, które jest tekstem, który edytor wyświetliłby, gdyby został otwarty.


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

Parametry

Instancja skryptu do aktualizacji.

Wartość domyślna: ""
callback: function

Funkcja, która zwraca nową zawartość skryptu.

Wartość domyślna: ""

Zwroty

()

Zdarzenia

TextDocumentDidChange

Zabezpieczenia dodatku plug-in

Występuje tuż po zmianach ScriptDocument, które następują po zmianach textChanged. Jest to lista struktur zmian formatu:

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

Parametry

document: ScriptDocument
changesArray: Variant

Przykłady kodu

ScriptEditorService.TextDocumentDidChange

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

Zabezpieczenia dodatku plug-in

Pożary występują tuż przed zniszczeniem obiektu ScriptDocument, które następuje tuż po zamknięciu edytora skryptów.Po wystrzeleniu tego zdarzenia ScriptDocument wchodzi w stan "Zamknięty", a próba wezwania jego metod wywołuje błąd.Przedmioty ScriptDocument nie są ponowne, nawet jeśli edytor skryptów ponownie otwiera ten sam skrypt.

Parametry

oldDocument: ScriptDocument

Przykłady kodu

ScriptEditorService.TextDocumentDidClose

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

Zabezpieczenia dodatku plug-in

Ogień pojawia się tuż po utworzeniu i przypisaniu obiektu ScriptDocument do usługi, co zdarza się tuż po otwarciu edytora skryptów.

Parametry

newDocument: ScriptDocument

Przykłady kodu

ScriptEditorService.TextDocumentDidOpen

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)