ScriptEditorService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet
Çoğaltılmamış

Bu hizmet, ScriptDocument instanslarıyla etkileşim kurmak için kullanılır.

Özet

Yöntemler

Etkinlikler

Özellikler

Yöntemler

DeregisterAutocompleteCallback

void
Eklenti Güvenliği

Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.

Parametreler

name: string

Dönüşler

void

Kod Örnekleri

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

void
Eklenti Güvenliği

Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.

Parametreler

name: string

Dönüşler

void

Kod Örnekleri

ScriptEditorService:DeregisterScriptAnalysisCallback

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

FindScriptDocument

Eklenti Güvenliği

Verilen ScriptDocument ile eşdeğer olan açık LuaSourceContainer döndürür veya verilen skript açılmazsa hiçbir şey yapmaz.

Parametreler


Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Verilen skript için düzenleme zamanı kaynağını iade eder.

Eğer Kaynak Düzenleyicida açılırsa, bu yöntem, gösterilen metni düzenleyicide gösterir. Eğer Script.Sourceda açılmazsa, yöntem, gösterilen metni düzenleyicide gösterir. Düzenleme süresi kaynağı, Class.Script.Source özelliğiyle her zaman tutarl.

Parametreler


Dönüşler

GetScriptDocuments

Instances
Eklenti Güvenliği

Komut çubuğu dahil olmak üzere mevcut açık script dokümanlarının bir matrisini iade eder.


Dönüşler

Instances

Kod Örnekleri

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
Eklenti Güvenliği

Otomatik tamamlanma çağrısını kaydeder callbackFunction``name``priority ile adlandırılmış.

Kript Dizüstürleyici, kaydedilmiş kript dizüstürleyicileri otomatik tamamlayıcı olarak çağırır, tüm kaydedilmiş kript dizüstürleyicileri otomatik olarak önceliği artan sırayla çağrılır. Birden fazla

CallFunction şu yazolmalıdır: (Request: table, Response: table) -> table

İstek tablosunun aşağıdaki biçimi vardır:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position şu anda otomatik tamamlanan tek sayısal cursor pozisyonudur.
  • textDocument.document is the open ScriptDocument you are completing in, if it exists.
  • textDocument.script bu, eğer mevcutsa LuaSourceContainer içindedir.

Eğer both textDocument.document ve textDocument.script varsa, bunlar birbirlerine eşittir: req.textDocument.document:GetScript() == req.textDocument.script

Yanıt tablosunun aşağıdaki biçimi vardır:


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 bir tamamlanma öğesi matrisidir. Bu matrisin sırası önemsizdir ve kullanıcı türleri olarak tarayıcıda işlenir.
  • Response.items[n].label is the label of the item which display in the autocomplete menu.
  • Response.items[n].kind bu öğenin hangi türde otomatik tamamlayıcı öğesi olduğunu belirtir. İlk olarak, bu, verilen öğenin ekranda verilen eşyayı kontrol eder. Tüm türlerin benzersiz bir simgeyoktur. Eğer belirtilmediyse, ekranın "Özellik" simgegörüntülemesi için varsayılır.
  • Response.items[n].tags bir özellik tamamlandığını tanımlayan bir dizi etiketleri belirtir. Ayrıntılar için Enum.CompletionItemTag bakın.
  • Response.items[n].details bir tamamlanma öğesi hakkındaki ayrıntıları açıklayan bir yazılımdır. Standart öğeler için, bu bir tür temsilidir. Belge edilecek öğelerin, böylece belge edilecek widgetun görüntülenmesi için, documentation olması gerekir, ancak documentation.value boş olabil
  • Response.items[n].documentation belgesinin ana kaynağını value alanında belirtir. documentation, değer boşsa bile gösterim penceresi görüntülenir, böylece belgesi gösterim penceresi görüntülenir, aksi takdirde ayrıntılar veya aşırı yükler belirtilmiş olur.
  • Response.items[n].overloads bir fonksiyonun otomatik tamamlanmasının aşırı yüklerinin sayısını belirtir.
  • Response.items[n].learnMoreLink bağlantıları kullanıcı dokümanlarındaki ilgili bir sayfaya. Bu URL oluşturmak için bir https istek olmalıdır; diğer URL'ler kullanıcı araçlarında görüntülenmez.
  • Response.items[n].codeSample örnek kullanımını belirtir. documentation bu alanı gösteren boş değil olmalıdır.
  • Response.items[n].preselect Eğer doğruysa, editör bu tamamlanma öğesini diğerlerinden önce sıralar ve kullanıcı için varsayılan olarak seçer. Hiçbir etki yoksa veya eksiksa.
  • Response.items[n].textEdit Eğer mevcutsa, tamamlanmasını kabul etmek bu metni düzenlemeyi uygular - yeniText arasındaki boşluğu yeniYazı ile değiştirir.

Bir çağrı iyi olmayan bir sonuç veya bir hata ile geri dönerse, editor hatalı yanıt tablosunu yeniden kullanır ve özelleştirilmiş autotamamlayıcı sonuç listesini kullanır.

Parametreler

name: string
priority: number
callbackFunction: function

Dönüşler

void

Kod Örnekleri

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
Eklenti Güvenliği

Bir callbackFunction çağrısını kaydeder name ile adlandırılmış priority ile öncelikli olarak. Studio'da 2>Skript Analizi2> çalıştığında, tüm kaydedilmiş çağrıların öncelikli olarak yükselenmesi için yerleştirilmiştir. Çağrıların yan

İstek tablosunda şu biçim vardır, script , bu da LuaSourceContainer olacaktır, którzy birincil olarak analize edilecek.


type Request = {
script: LuaSourceContainer?
}

Cevap tablosunda şu biçim vardır, diagnostics diyor ki bir dizi diyagram tablosu. Her bir diyagram tablosunun aşağıdaki girişleri vardır.


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 tekrarın altını çekmek için etkili olan bir metin menzilini temsil eder, böylece çizgi/karakter başlangıcını belirtmek için hangi satır/karakteri ve çizgi/karakteri durduracaklarını gösterir.
  • code mesaj için bir etiket.
  • message satır için görüntülenen bir uyarı mesajıdır. Bu ayrıca, kullanıcının kursörünü Satır Editor'indeki kutuya koyduğunda görüntülenen bir açıklama alanında görüntülenir.
  • severity is a Enum.Severity value for the diagnostics. This determines how the diagnostic is categorized in the Script Analysis tool in Studio, as well as how text is highlight in the Script Editor.
  • codeDescription bağlantılarına kullanıcı oluşturma dokümanlarındaki ilgili bir sayfaya. Bu URL, https isteği olarak gösterilmelidir; diğer URL'ler editorde görüntülenmez.

Parametreler

name: string
priority: number
callbackFunction: function

Dönüşler

void

Kod Örnekleri

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

Bekletir
Eklenti Güvenliği

Bir Kod Düzenleyici'nin belirli bir senaryoyu açması istenir. İstek başarılı olursa (evet, sıfır) geri döner. İstek başarısız olursa (dizi, sıfır) geri döner.

Eğer zaten açılmışsa, bu işlev başarılı olur ve girişleri ilgili editöre geçirir.

Parametreler


Dönüşler

Kod Örnekleri

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
Bekletir
Eklenti Güvenliği

Verilen skript için düzenleme zamanını Script.Source iade eder.

Bu işlev, eski içerikleri kullanarak yeni içerikleri hesap etmek için scriptin yeni içeriklerini hesap etmek için eski içerikleri çağrır.

Eğer Kaynak Güncelleme ekranında Script.Source açıksa, kullanıcının Class.Script.Source özelliği 2>Class.Script.Source2> kaynağını güncellemeye isteği gönderir. Editor bu güncellemeyi 5>Class.Script.Source5> özelliğinin kullanıcı versiyonuyla günc

Çağrı işlevi geri dönmeyebilir. Eğer çağrı işlevi nil döndürürse, işlem iptal edilir. Bu işlev, işlem iptal edilenecek veya başarılı olana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kadar yayınlanana kad

Eğer senaryo açılmazsa, yeni içerik kaynakgüncellenir, bu da açıldığında gösterilen metindir.


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

Parametreler

Güncellenecek kullanıcı kayıdı.

callback: function

Yeni script içeriğini döndüren işlev.


Dönüşler

void

Etkinlikler

TextDocumentDidChange

Eklenti Güvenliği

Sadece bir ScriptDocument değişikliğinden sonra ateş eder. textChanged ise formatın değişiklik yapılarının bir matrisi olarak işaret edilir:

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

Parametreler

document: ScriptDocument
changesArray: Variant

Kod Örnekleri

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

Eklenti Güvenliği

Class.ScriptDocument nesneyi yok etmeden önce, bu ScriptDocument nesnesi kullanıcının kullanıcı aracını kapattıktan hemen sonra başlar. Bu olaydan sonra ScriptDocument nesneleri "Kapalı" bir devlet girer ve 1> Class.ScriptDocument1> n

Parametreler

oldDocument: ScriptDocument

Kod Örnekleri

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

Eklenti Güvenliği

Sadece bir ScriptDocument nesneyi oluşturduktan sonra hizmete bağlanır ve bu, kullanıcının kod editörünü açtıktan hemen sonra gerçekleşir.

Parametreler

newDocument: ScriptDocument

Kod Örnekleri

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)