ScriptEditorService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Bu hizmet, ScriptDocument instanslarıyla etkileşim kurmak için kullanılır.
Özet
Özellikler
Yöntemler
Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.
Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.
Verilen ScriptDocument ile eşdeğer olan açık LuaSourceContainer döndürür veya verilen skript açılmazsa hiçbir şey yapmaz.
Verilen skript için düzenleme zamanı kaynağını iade eder.
Komut çubuğu dahil olmak üzere mevcut açık script dokümanlarının bir matrisini iade eder.
Otomatik tamamlanma çağrısını kaydeder callbackFunction``name``priority ile adlandırılmış.
Bir İçerik Analizi çağrısını kaydeder callbackFunction isimli name ile priority .
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.
Eski scriptten yeni içerik oluşturur veya açık olan script editörünü güncelleyecek veya kapalı olan Script instansını güncelleyecek.
Etkinlikler
Sadece bir ScriptDocument değişikliğinden sonra ateşlenir.
Sadece bir ScriptDocument nesneyi yok etmeden önce ateş eder ve bu, skript editörünün kapandığından hemen sonra olur.
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.
Özellikler
Yöntemler
DeregisterAutocompleteCallback
Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.
Parametreler
Dönüşler
Kod Örnekleri
game.ScriptEditorService:DeregisterAutocompleteCallback("foo")
DeregisterScriptAnalysisCallback
Önceki olarak kaydedilmiş bir çağrıyı name ismiyle kaldırır.
Parametreler
Dönüşler
Kod Örnekleri
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")
FindScriptDocument
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
--!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
--!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
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
Komut çubuğu dahil olmak üzere mevcut açık script dokümanlarının bir matrisini iade eder.
Dönüşler
Kod Örnekleri
--!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
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 labelkind: 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
Dönüşler
Kod Örnekleri
--!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
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
Dönüşler
Kod Örnekleri
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
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
--!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
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ı.
Yeni script içeriğini döndüren işlev.
Dönüşler
Etkinlikler
TextDocumentDidChange
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
Kod Örnekleri
--!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
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
Kod Örnekleri
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Closed", scriptDocument)
end)
TextDocumentDidOpen
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
Kod Örnekleri
--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Opened", scriptDocument)
end)