CollectionService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
CollectionService grupları yönetir (koleksiyonlar) instansların etiketleriyle. Etiketler, sunucudan kliente kopyalanan yerleri yeniden oluşturan yerlerin uygulanan dizgileridir. Ayrıca, yerler kaydedildiğinde seri hale getirilir.
Class.CollectionService 'in ana kullanımı, davranışlarını genişletmek için kullanabileceğiniz özel etiketlerle instanslar oluşturmaktır. Eğer aynı kodu birçok farklı nesneye eklediğinizde, belki de CollectionService kullanan bir kod daha iyi olur.
Etiketler bu durumyöntemleri aracılığıyla eklenebilir veya kaldırılabilir, takip etmek için AddTag() veya RemoveTag() . Onlar ayrıca Studio'da Etiketler bölümünden doğrudan yönet
Kopyalama
Etiketler çoğaldığında, etiketlerin aynı anda yeniden kopyalanması . Bu nedenle, eğer bir sunucukullanc
Özet
Özellikler
Yöntemler
Bir etiket bir Instance'a uygulanır.
Bir veritabanına eklendiğinde bir sinyal oluşturur.
Verilen bir etiketin bir durum'tan kaldırıldığında çalıştığı sinyali iade eder.
Verilen bir etiketle oyundaki bir dizi nesne döndürür.
Verilen bir objeye tüm etiketlerin uygulandığı bir matris alır.
Bir nesnenin belirli bir etikete sahip olup olmadığını kontrol edin.
Bir durumbir etiket kaldırır.
Etkinlikler
Bir etiket bir nesneye eklendiğinde ateşlenir ve eklenen etiket dünyatek görüntülenme olayıdır.
Bir etiketin bir nesneden kaldırıldığında ve kaldırılan etiketin dünyaartık kullanılmadığında ateşlenir.
Özellikler
Yöntemler
AddTag
AddTag bir etiketi bir Instance 'a uygulayacak, etiket zaten etikete uygulanmışsa hiçbir şey yapmaz. Bir etiketi başarıyla eklemek bir CollectionService:GetInstanceAddedSignal() ile verilen etikete başarıyla eklenen bir sinyal başlatacaktır.
Uyarı:: Bir durumetiketlemek için, bazı kaynakların etiketin işlevini sağlamak için kullanıldığı yaygındır, örneğin etkinleştirme olay bağlantıları veya tabl
Parametreler
Dönüşler
GetInstanceAddedSignal
GetInstanceAdded bir etiket (bir dizi) alır ve iki şart altında ateşlenen bir sinyali döndürür:
- Etiket, DataModel (oyun) içindeki bir instansa atanır kullanando CollectionService:AddTag() veya Instance:AddTag().
- Verilen etikete sahip bir instans, şu anda DataModel ile aşağıdaki gibi bir önceki olarak eklenir: e.g. Instance.Parent veya benzeri bir şey tarafından ayarlanması gibi.
Aynı etiketle bu yönteme bağlı kalan sonraki çağrılar aynı sinyal objesini iade eder. Ayrıca, CollectionService:GetTagged() çağırmak da etkinleştirilmiş bir etikete sahip olan bir liste oluşturur (böylece etkinleştirilmiş etiketin etkinleştirilmesi durumunda etkinleştirilmiş etiketin etkinleştirilmesi dur
Ayrıca bakınız CollectionService:GetInstanceRemovedSignal(), bu da benzer koşullar altında başlayan bir etkinliği döndürür.
Parametreler
İzleyeceğin etiket.
Dönüşler
Etkinleştirici, etiketi bir durumeklediğinizde çalıştırılan bir olay.
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if human then
human.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
-- This table maps BaseParts with the tag to their Touched connections
local connections = {}
local function onInstanceAdded(object)
-- Remember that any tag can be applied to any object, so there's no
-- guarantee 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 we made a connection on this object, disconnect it (prevent memory leaks)
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
GetInstanceRemoved'a bir etiket verilir (bir dizi) ve iki şart altında ateşlenen bir sinyali döndürür:
- Etiket DataModel (oyun) içindeki bir instanstan kaldırılır. CollectionService:RemoveTag() veya Instance:RemoveTag() .
- Verilen etikete sahip bir instans, şu anda DataModel ile aşağıdaki gibi kaldırılır, yani Instance.Parent veya benzeri olabilir.
Aynı etiketle bu yönteme bağlı kalan sonraki çağrılar aynı sinyal nesnesini iade eder. Sinyal, bağlantıları bırakma gibi kullanılan kaynakları temizlemeye yararlıdır.
Ayrıca bakınız CollectionService:GetInstanceAddedSignal(), aynı koşullar altında başlayan bir etkinliği döndürür.
Parametreler
İzleyeceğin etiket.
Dönüşler
Etkinleştirme etiketini bir durum'tan kaldığında çalışan bir etkinlik.
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if human then
human.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
-- This table maps BaseParts with the tag to their Touched connections
local connections = {}
local function onInstanceAdded(object)
-- Remember that any tag can be applied to any object, so there's no
-- guarantee 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 we made a connection on this object, disconnect it (prevent memory leaks)
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
GetTagged, DataModel ( game ) ile ilgili bir dizi nesneyi içeren bir matrisi içerir. Bu etiketler, Class.CollectionService:AddTag() ile eklenmiş ve bir etiket k
Etiketli tüm nesneleri tespit etmek istiyorsanız, hem mevcut hem de gelecekteki tüm nesneleri itereceğiniz bu yöntemi kullanın, bir sinyal tarafından iade edilen bağlantı yaparken aynı anda bağlantı yapmak için bir nesneyi bağlantı yapmak için bir nesneyi bağlantı yapmak için bir nesneyi bağlantı yapmak için bir nesneyi bağlantı yapmak için bir nesney
Bu yöntem, döndürülen nesnelerin herhangi bir siparişini garanti etmez. Ayrıca, nesnelerin verilen etikete sahip olabileceği olasılığı vardır, ancak bir Class.DataModel olarak yok olmaz, yani onun ebeveyni nul olabilir. Bu yöntem, bu nesneleri döndürmez.
Parametreler
Aranacak etiket.
Dönüşler
Etiketle tüm instansların bir matrisi.
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local tag = "Deadly"
local function onDeadlyPartTouched(otherPart)
if not otherPart.Parent then
return
end
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if human then
human.Health = 0
end
end
-- Save the connections so they can be disconnected when the tag is removed
-- This table maps BaseParts with the tag to their Touched connections
local connections = {}
local function onInstanceAdded(object)
-- Remember that any tag can be applied to any object, so there's no
-- guarantee 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 we made a connection on this object, disconnect it (prevent memory leaks)
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
GetTags bir instans verilir ve verilen objeye uygulanan etiketlerin bir listesini döndürür.
local CollectionService = game:GetService("CollectionService")local object = workspace.Modellocal tags = CollectionService:GetTags(object)print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))
Bu yöntem, bir nesnede birden fazla etiketle bir şey yapmak istediğinizde kullanışlıdır. Ancak, bu yöntemi tek bir etiket için kullanmak verimli olmayabilir. Bunun için, CollectionService:HasTag() kullanarak tek bir etiket için kontrol edin.
Parametreler
Etiketlerinin döndürülmesi gereken nesne.
Dönüşler
Verilen nesneye uygulanan etiketlerin bir matrisi.
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local object = script.Parent.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
HasTag, belirli bir nesnenin bir etikete sahip olup olmadığını döndürür.
- Etiketi eklemek için CollectionService:AddTag() kullanılıyor olması nedeniyle bu yöntemin geri dönmesi sağlanır.
- Etiketi kaldırmak için CollectionService:RemoveTag() kullanılıyor. Bu yöntemin yanlış döndüğünü gösteren bir sonuç.
Bu yöntem kullanılarak herhangi bir etiketin CollectionService:GetTags() ile iade edilmesi durumunda kullanıcının kullanımıyla geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğü haliyle geri döndüğ
Parametreler
Bir etiketin varlığını kontrol etmek için oluşturulan instans.
Kontrol etmek için etiket.
Dönüşler
İン스턴스'ın etikete sahip olup olmadığı.
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local object = script.Parent.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
RemoveTag bir etiketi bir instansdan kaldırır. Bu yöntem, etiketin ilk dünyaolmadığı durumda bir hata oluşturmaz. İyi bir şekilde bir etiketi kaldırmak, CollectionService:GetInstanceRemovedSignal() ile verilen etiketle ilgili bir sinyal oluşturur.
Bir etiketi kaldığında, bazı kaynaklar etiketin işlevini vermek için kullanılır, örneğin etkinlik bağlantıları veya tablolar. Hafıza sızdırmalarını önlemek için, bir etiket için artık gerekli olmadığında (disconnect, set to nil, vb.) bu temizlenmelidir.
Parametreler
Dönüşler
Kod Örnekleri
local CollectionService = game:GetService("CollectionService")
local object = script.Parent.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")