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 örnekleriyle etkileşim kurmak için kullanılır.

Özet

Yöntemler

Etkinlikler

Özellikler

Yöntemler

DeregisterAutocompleteCallback

()
Eklenti Güvenliği

Daha önce kaydedilmiş bir geri çağrıyı adı ile name kaldırır.

Parametreler

name: string
Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

()
Eklenti Güvenliği

Daha önce kaydedilmiş bir geri çağrıyı adı ile name kaldırır.

Parametreler

name: string
Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

ScriptEditorService:DeregisterScriptAnalysisCallback

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

FindScriptDocument

Eklenti Güvenliği

Verilen ScriptDocument 'ye eşdeğer açık LuaSourceContainer döndürür veya verilen senaryo açık değilse nil .

Parametreler

Varsayılan değer: ""

Dönüşler

Kod Örnekleri

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

Eklenti Güvenliği

Verilen senaryo için düzenleme süresi kaynağını döndürür.

Eğer senaryo Kod Editörü 'nde açıksa, bu yöntem şu anda editörde gösterilen metni geri verir.Eğer senaryo editörde açılmazsa, yöntem açıldığında editörün göstereceği metni döndürür.Düzenleme süresi kaynağı daima Script.Source özelliği ile tutarlı olmayabilir.

Parametreler

Varsayılan değer: ""

Dönüşler

GetScriptDocuments

Instances
Eklenti Güvenliği

Komut çubuğu dahil olmak üzere mevcut açık kript dokümanlarının bir diziini döndürür.


Dönüşler

Instances

Kod Örnekleri

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

()
Eklenti Güvenliği

Ön doldurma çağrısı callbackFunction önceliği ile adlandırılan name kaydedilir ile ön doldurma çağrısı priority .

Senaryo Editörü otomatik tamamlanmayı çağırdığında, tüm kayıtlı otomatik tamamlanma çağrıları otomatik tamamlanma isteği ve yanıtı ile giderek artan öncelik sırasında çağrılır.Birden fazla geri çağrı bir önceliği paylaşabilir, ancak ardından çağrı sırası öngörülemez.Her geri çağrı, yanıt giriş tablosuyla aynı biçimde bir yanıt tablosu döndürmek üzere tasarlanmıştır.Geri çağrılar verilmemelidir.İlk çağrılan geri arama, yanıt tablosu olarak içsel otomatik tamamlamanın yanıtını alır ve sonraki çağrılar önceki çağrının çıkısını yanıt tablosu olarak alır.Geri çağrılar ya geçirilen tabloyu değiştirebilir veya aynı biçimde yeni bir tablo döndürebilir.

The callbackFunction ın aşağıdaki yazsahip olması gerekir: (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 bir otomatik tamamlanma yaptığınız bir bir indeksli kurma konumudur.
  • textDocument.document açık ScriptDocument olan, varsa bitirdiğiniz, eğer varsa.
  • textDocument.script eksiksiz bitirdiğiniz LuaSourceContainer varsa, varsa.

Her ikisi de textDocument.document ve textDocument.script mevcutsa, birbirlerine karşılırlar: 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,
insert: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
}?
}
}
}
  • Response.items bir tamamlanma öğeleri dizesidir. Bu dizenin sırası önemsizdir ve kullanıcılar tarafından yazıldığı gibi editörde kullanılır.
  • Response.items[n].label otomatik tamamlaama menüsünde görüntülenen öğenin etiketidir.
  • Response.items[n].kind bu otomatik tamamlama öğesinin hangi tür olduğunu belirtir.Öncelikle bu, editörde öğeye verilen simgeyi kontrol eder.Tüm türlerin benzersiz bir ikonu yok.Belirtilmediğinde, editör "Metin" simgesini kullanır.Desteklenmeyen türler varsayılan olarak "Özellik" simgesini görüntüler.
  • Response.items[n].tags bir tamamlayıcı öğeyi tanımlayan bir dizi etiket belirtir. İşlevleri hakkında ayrıntılar için Enum.CompletionItemTag bakın.
  • Response.items[n].details bir bitirme öğesiyle ilgili ayrıntıları tanımlayan bir dize belirtir.Varsayılan öğeler için, bu onların yazbir dize temsili.Belge düzenleyicisinin görüntülenmesi için, documentation mevcut olmalı, ancak documentation.value boş olabilir.
  • Response.items[n].documentation belgelerin ana vücudunu value alanında tanımlar.documentation varsa, değer boş olsa bile, belgeler penceresi ayrıntılar veya yüklemeler belirtilirse görüntülenir.
  • Response.items[n].overloads bir işlevin otomatik tamamlanmasının yük sayısını belirtir
  • Response.items[n].learnMoreLink yaratıcı belgelerindeki ilgili bir sayfaya bağlantılar.Bu URL oluştur.roblox.com'u oluşturmak için bir https isteği olmalıdır; diğer URL'ler editörde görünmez.
  • Response.items[n].codeSample bitirme öğesinin bir örnek kullanımını belirtir. documentation bu alanı görüntülemek için boş olmamalıdır.
  • Response.items[n].preselect Eğer doğruysa, editör bu bitirme öğesini tüm diğerlerinden önce sıralar ve varsayılan olarak kullanıcı için seçer. Yanlış veya kayıp olursa hiçbir etki yoktur.
  • Response.items[n].textEdit Eğer mevcutsa, bitirmeyi kabul etmek bu metin düzenlemeyi uygular - pozisyonların başlangıcından sonuna yeniText ile yer değiştiren veya yerleştiren boşlukları ekler.

Bir geri arama geçersiz bir sonuç döndürür veya bir hata ile karşılaşırsa, editör değiştirilmiş Yanıt tablosunu reddeder ve yerleşik otomatik tamamlama sonuç listesini kullanır.

Parametreler

name: string
Varsayılan değer: ""
priority: number
Varsayılan değer: ""
callbackFunction: function
Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

()
Eklenti Güvenliği

Bir senaryo analizi geri çağrısı callbackFunction adlandırılan name ile priority kaydedilir.Studio'daki senaryo analizi yapıldığında, tüm kayıtlı geri çağrılar sırasıyla öncelikli olarak çağrılır.Her geri çağrı, aşağıda belirtilen biçime uyan bir yanıt tablosu döndürmek üzere tasarlanmıştır.Geri çağrılar verilmemelidir.

İstek tablosunun aşağıdaki biçimi vardır, script nerede LuaSourceContainer analiz edilecek olan budur.


type Request = {
script: LuaSourceContainer?
}

Yanıt tablosunun aşağıdaki biçimi vardır, where diagnostics diagnostik tabloların bir dizi olduğu yerdir. Her diagnostik tablo aşağıdaki girişlere sahiptir.


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 bir düzeltici tarafından vurgulanması gereken bir metin aralığını temsil eder, hangi satır/karakterin vurgulanmaya başlayacağını ve hangi satır/karakterin vurgulanmayı durduracağını sağlar.
  • code mesaj için bir etikettir.
  • message çizgi için görüntülenmesi gereken bir uyarı mesajıdır.Bu, kullanıcı kursörünü Senaryo Editöründeki satıra getirdiğinde bir açıklama olarak da görünecektir.
  • severity diyagnostik için bir Enum.Severity değeridir.Bu, Studio'daki Script Analysis aracında teşhisin nasıl sınıflandırıldığını ve ayrıca metnin Script Editöründe nasıl vurgulandığını belirler.
  • yaratıcı dokümanlarında ilgili bir sayfaya bağlantılar. Bu URL, editörde başka URL görünmez.

Parametreler

name: string
Varsayılan değer: ""
priority: number
Varsayılan değer: ""
callbackFunction: function
Varsayılan değer: ""

Dönüşler

()

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 Senaryo Editörünün belirtilen senaryoyu açmasını isteyen istekler.İstek başarılı olursa geri döndürür (true, nil).İstek başarısız olursa (yanlış, dizi) sorunu tanımlayan bir dize ile geri döner.

Eğer senaryo zaten açıksa, bu işlev başarılı olur ve sekmeleri ilişkili editöre geçirir.

Parametreler

Varsayılan değer: ""

Dönüşler

Kod Örnekleri

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

()
Bekletir
Eklenti Güvenliği

Verilen senaryo için düzenleme süresini Script.Source geri döndürür.

Bu işlev, senaryonun eski içeriğini kullanarak geçmiş geri çağrıyı çağırır ve senaryonun yeni içeriğini hesaplar.

Eğer senaryo Kod Editörü 'nde açıksa, kaynakgüncelleştirmek için editöre bir istek gönderir.Editör, Script.Source özelliğinin kullanıcının senaryo sürümüyle uyumadığı durumda bu güncellemeyi reddedebilir, bu durumda geri çağrılacak ve deneme tekrarlanacaktır.

Geri çağrı yapılamayabilir.Geri arama nil döndürürse, işlem iptal edilir.Bu işlev, işlem iptal edilene veya başarılı olana kadar verir.

Eğer senaryo editörde açılmazsa, yeni içerik açıldığında görüntüleyeceği metin olan senaryo kaynakgüncellenir.


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

Parametreler

Güncellenmesi gereken senaryo örneği.

Varsayılan değer: ""
callback: function

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

Varsayılan değer: ""

Dönüşler

()

Etkinlikler

TextDocumentDidChange

Eklenti Güvenliği

Sadece bir ScriptDocument değişiklikten sonra yangınlar. textChanged formatın değişim yapılarının bir dizi:

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

Parametreler

document: ScriptDocument
changesArray: Variant

Kod Örnekleri

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

Eklenti Güvenliği

Senaryo editörü kapandıktan hemen sonra ScriptDocument bir nesne yok edilmeden önce yangınlar çıkar, bu da senaryo editörünün kapatılmasından hemen sonra gerçekleşir.Bu olay ateşlendikten sonra, ScriptDocument "Kapalı" bir duruma girer ve yöntemlerini çağırmaya çalışmak bir hata verir.ScriptDocument nesneler aynı senaryoyu yeniden kullanılabilir hale getirmez, yazılım editörü aynı senaryoyu yeniden açsa bile.

Parametreler

oldDocument: ScriptDocument

Kod Örnekleri

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

Eklenti Güvenliği

Yalnızca bir ScriptDocument nesnesi oluşturulduktan ve hizmete ebeveyn atandıktan sonra yangınlar çıkar, ki bu, senaryo editörü açıldıktan hemen sonra gerçekleşir.

Parametreler

newDocument: ScriptDocument

Kod Örnekleri

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)