CollectionService

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

CollectionService grupları yönetir (koleksiyonlar) durumların etiketleri ile.Etiketler, sunucudan müşteriye yeniden yansıyan örneklere uygulanan dize setleridir.Yerler kaydedildiğinde de serilize edilirler.

CollectionService 'nin birincil kullanımı, davranışlarını genişletmek için kullanabileceğiniz belirli etiketlerle instansları kaydetmektir.Aynı senaryoyu birçok farklı duruma eklediğinizi görürseniz, CollectionService kullanan bir senaryo daha iyi olabilir.

Etiketler bu sınıfın yöntemleri aracılığıyla AddTag() veya RemoveTag() gibi eklenebilir veya kaldırılabilir.Ayrıca, bir durumözelliklerinin Etiketler bölümünde doğrudan yönetilebilir veya dahili Etiket Düzenleyici aracı aracılığıyla yönetilebilir.

Replikasyon

Etiketler yeniden yapıldığında, bir örnekteki tüm etiketler aynı anda yeniden yapılır .Bu nedenle, istemciden bir örneğe bir etiket ayarlarsanız, aynı sunucudan aynı örnek üzerinde farklı bir etiket ekleyin/kaldırın, istemcinin yerel etiketleri üzerinde aynı örnek üzerinde yeniden yazılır.StreamingEnabled yerlerde, örnekler müşterinin yayınlanan alanını terk ettiğinde yükleri kaldırılabilir.Böyle bir örnek yayınlanan alana yeniden girdiğinde, özellikler ve etiketler sunucudan yeniden senkronize edilecektir.Bu, LocalScripts tarafından yapılan değişikliklerin üzerine yazılmasına/kaldırılmasına neden olabilir.

Özet

Yöntemler

Etkinlikler

  • Bir etiket bir örneğe eklendiğinde ve eklenen etiket o etiketin dünyatek olay olduğunda ateş eder.

  • Bir etiket bir örnekten kaldırıldığında ve kaldırılan etiket artık herhangi bir dünyakullanılmadığında ateş eder.

Özellikler

Yöntemler

AddTag

()

Bu yöntem, etiketi bir Instance 'ye uygular ve etiket zaten o durumuygulanıyorsa hiçbir şey yapmaz.Başarıyla bir etiket ekleme, verilen etiketle oluşturulan bir sinyali ateş edecektir: GetInstanceAddedSignal() .

Uyarılar
  • İstemci tarafından eklenen bir durumetiketi, sunucu daha sonra bu örnek üzerinde bir etiket ekler veya kaldırırsa, sunucu tüm etiketleri bir araya getirir ve önceki etiketleri üzerine yazar.

  • Bir durumetiket atarken, etiketin işlevini vermek için bazı kaynakların kullanılması yaygındır, örneğin etkinlik bağlantıları veya tablolar.Hafıza sızıntılarını önlemek için, bunları temizlemek (bağlantı kes, nil olarak ayarla, vb.) bir etiket için artık gerekmediğinde iyi bir fikirdir.RemoveTag() , Instance:Destroy() veya GetInstanceRemovedSignal() tarafından döndürülen bir sinyale bağlı bir işlev çağrırken bunu yapın.

Parametreler

instance: Instance
Varsayılan değer: ""
tag: string
Varsayılan değer: ""

Dönüşler

()

GetAllTags

Paralel yaz

Deneyimdeki tüm etiketlerin bir diziini döndürür.


Dönüşler

GetInstanceAddedSignal

Bir etiket (dizi) verildiğinde, bu yöntem iki koşul altında ateşlenen bir sinyal döndürür:

Aynı etiketle bu yönteme yapılan sonraki çağrılar aynı sinyal nesnesini geri verir.Ayrıca, zaten bir etikete sahip olan durumların bir listesini almak için GetTagged() 'yi de arayın (ve dolayısıyla olayı ateş etmeyeceklerdir, eğer zaten DataModel içindeler).

Ayrıca bakın GetInstanceRemovedSignal() benzer koşullar altında ateşlenen bir olayı geri gönderen.

Parametreler

tag: string

İzlenecek etiket.

Varsayılan değer: ""

Dönüşler

Etiketi bir durumeklediğinizde ateşleyen bir olay.

Kod Örnekleri

This code sample causes any BasePart with the tag Deadly to kill any Humanoid that touches it. It does this using a common pattern with CollectionService to listen for all parts with the tag and make a connection, then disconnect the connection when the tag is removed.

Deadly Bricks using CollectionService

local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local humanoid = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
local connections = {}
local function onInstanceAdded(object)
-- Confirm that the object with this tag is a BasePart
if object:IsA("BasePart") then
connections[object] = object.Touched:Connect(onDeadlyPartTouched)
end
end
local function onInstanceRemoved(object)
-- If there is a stored connection on this object, disconnect/remove it
if connections[object] then
connections[object]:Disconnect()
connections[object] = nil
end
end
-- Listen for this tag being applied to objects
CollectionService:GetInstanceAddedSignal(tag):Connect(onInstanceAdded)
CollectionService:GetInstanceRemovedSignal(tag):Connect(onInstanceRemoved)
-- Also detect any objects that already have the tag
for _, object in pairs(CollectionService:GetTagged(tag)) do
onInstanceAdded(object)
end

GetInstanceRemovedSignal

Bir etiket (dizi) verildiğinde, bu yöntem iki koşul altında ateşlenen bir sinyal döndürür:

Aynı etiketle bu yönteme yapılan sonraki çağrılar aynı sinyal nesnesini geri verir.Sinyal, bir kez etiket kullanan instanslar tarafından kullanılan kaynakları temizlemek için yararlıdır, örneğin bağlantıları koparmak.

Ayrıca bakın GetInstanceAddedSignal() benzer koşullar altında ateşlenen bir olayı geri gönderen.

Parametreler

tag: string

İzlenecek etiket.

Varsayılan değer: ""

Dönüşler

Etiketi bir durumkaldırdığınızda ateşleyen bir olay.

Kod Örnekleri

This code sample causes any BasePart with the tag Deadly to kill any Humanoid that touches it. It does this using a common pattern with CollectionService to listen for all parts with the tag and make a connection, then disconnect the connection when the tag is removed.

Deadly Bricks using CollectionService

local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local humanoid = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
local connections = {}
local function onInstanceAdded(object)
-- Confirm that the object with this tag is a BasePart
if object:IsA("BasePart") then
connections[object] = object.Touched:Connect(onDeadlyPartTouched)
end
end
local function onInstanceRemoved(object)
-- If there is a stored connection on this object, disconnect/remove it
if connections[object] then
connections[object]:Disconnect()
connections[object] = nil
end
end
-- Listen for this tag being applied to objects
CollectionService:GetInstanceAddedSignal(tag):Connect(onInstanceAdded)
CollectionService:GetInstanceRemovedSignal(tag):Connect(onInstanceRemoved)
-- Also detect any objects that already have the tag
for _, object in pairs(CollectionService:GetTagged(tag)) do
onInstanceAdded(object)
end

GetTagged

Instances
Paralel yaz

Bu yöntem, DataModel 'in soyundakileri olan bir dizi istisna döndürür etiketli bir dizi.Bir etiketi CollectionService:RemoveTag() veya Instance:RemoveTag() kullanarak kaldırmak, bu yöntemin onları geri vermediğinden emin olur.

Bir etiketle tüm örnekleri tespit etmek istiyorsanız, her ikisi de ve geleceği sunuyor ve ayrıca GetInstanceAddedSignal() tarafından döndürülen bir sinyala bağlantı kurarken bu yöntemi kullanarak örnekler üzerinde döngü yapın.

Bu yöntem döndürülen örneklerin herhangi bir sıralanmasını garanti etmez.Ayrıca, durumların verilen etikete sahip olması ancak DataModel 'in bir altı olmaması mümkündür, örneğin ebeveyni nil ; bu yöntem böyle durumları geri getirmeyecektir.

Parametreler

tag: string

Aranacak etiket.

Varsayılan değer: ""

Dönüşler

Instances

Etiketle tüm örneklerin bir dizi.

Kod Örnekleri

This code sample causes any BasePart with the tag Deadly to kill any Humanoid that touches it. It does this using a common pattern with CollectionService to listen for all parts with the tag and make a connection, then disconnect the connection when the tag is removed.

Deadly Bricks using CollectionService

local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local humanoid = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
local connections = {}
local function onInstanceAdded(object)
-- Confirm that the object with this tag is a BasePart
if object:IsA("BasePart") then
connections[object] = object.Touched:Connect(onDeadlyPartTouched)
end
end
local function onInstanceRemoved(object)
-- If there is a stored connection on this object, disconnect/remove it
if connections[object] then
connections[object]:Disconnect()
connections[object] = nil
end
end
-- Listen for this tag being applied to objects
CollectionService:GetInstanceAddedSignal(tag):Connect(onInstanceAdded)
CollectionService:GetInstanceRemovedSignal(tag):Connect(onInstanceRemoved)
-- Also detect any objects that already have the tag
for _, object in pairs(CollectionService:GetTagged(tag)) do
onInstanceAdded(object)
end

GetTags

Paralel yaz

Bir Instance verildiğinde, bu yöntem, durumuygulanan etiketlere sahip bir dizi dize döndürür.

Bu yöntem, aynı anda birden fazla etiketle bir şey yapmak istediğinizde yararlıdır, ancak tek bir etiketin varlığını kontrol etmek verimsizdir.Bunun için, tek bir etiket kontrol etmek için HasTag() kullanın.

Parametreler

instance: Instance

Etiketlerinin geri gönderilmesi gereken örnek.

Varsayılan değer: ""

Dönüşler

Verilen durumuygulanan etiketlerden oluşan bir dizi.

Kod Örnekleri

This code sample demonstrates adding, removing and querying a tag from an object using CollectionService.

Using Tags and CollectionService

local CollectionService = game:GetService("CollectionService")
local Workspace = game:GetService("Workspace")
local object = Workspace.Part
-- Add a tag
CollectionService:AddTag(object, "Deadly")
-- Query for a tag
if CollectionService:HasTag(object, "Deadly") then
print(object:GetFullName() .. " is deadly")
end
-- List tags on an object
local tags = CollectionService:GetTags(object)
print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))
-- Remove a tag
CollectionService:RemoveTag(object, "Deadly")

HasTag

Paralel yaz

Bu yöntem, belirli bir Instance 'nın bir etikete sahip olup olmadığını döndürür.

Genişletilmiş olarak, bir örnek üzerinde GetTags() 'a yapılan bir çağrı tarafından döndürülen herhangi bir etiket, bu yöntemle kullanıldığında true dönecektir.

Parametreler

instance: Instance

Bir etiketin varlığını kontrol etmek için örnek.

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

Kontrol edilecek etiket.

Varsayılan değer: ""

Dönüşler

İstisna etiketine sahip olup olmadığı.

Kod Örnekleri

This code sample demonstrates adding, removing and querying a tag from an object using CollectionService.

Using Tags and CollectionService

local CollectionService = game:GetService("CollectionService")
local Workspace = game:GetService("Workspace")
local object = Workspace.Part
-- Add a tag
CollectionService:AddTag(object, "Deadly")
-- Query for a tag
if CollectionService:HasTag(object, "Deadly") then
print(object:GetFullName() .. " is deadly")
end
-- List tags on an object
local tags = CollectionService:GetTags(object)
print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))
-- Remove a tag
CollectionService:RemoveTag(object, "Deadly")

RemoveTag

()

Bu yöntem, bir durumbir etiketi kaldırır. Başarıyla bir etiketi kaldırmak, verilen etiketle GetInstanceRemovedSignal() tarafından oluşturulan bir sinyali ateş edecektir.

Bir etiketi kaldırırken, etiketin işlevini vermek için bazı kaynakların kullanılması yaygındır, örneğin etkinlik bağlantıları veya tablolar.Hafıza sızıntılarını önlemek için, bunları temizlemek (bağlantı kes, nil olarak ayarla, vb.) bir etiket için artık gerekmediğinde iyi bir fikirdir.

Parametreler

instance: Instance

Etiketi kaldırmak için örnek.

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

Instansdan kaldırılacak etiket.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

This code sample demonstrates adding, removing and querying a tag from an object using CollectionService.

Using Tags and CollectionService

local CollectionService = game:GetService("CollectionService")
local Workspace = game:GetService("Workspace")
local object = Workspace.Part
-- Add a tag
CollectionService:AddTag(object, "Deadly")
-- Query for a tag
if CollectionService:HasTag(object, "Deadly") then
print(object:GetFullName() .. " is deadly")
end
-- List tags on an object
local tags = CollectionService:GetTags(object)
print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))
-- Remove a tag
CollectionService:RemoveTag(object, "Deadly")

Etkinlikler

TagAdded

Bu olay, bir etiket bir örneğe eklenir ve eklenen etiket o etiketin dünyatek olaydır.

Parametreler

tag: string

TagRemoved

Bu olay, bir etiket bir örnekten kaldırıldığında ve kaldırılan etiket artık herhangi bir dünyakullanılmadığında ateşlenir.

Parametreler

tag: string