CollectionService

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

CollectionService mengelola kelompok ( koleksi ) instans dengan tag .Label adalah set string yang diterapkan ke instansi yang bereplikasi dari server ke klien.Mereka juga diserialisasi saat tempat disimpan.

Penggunaan utama dari CollectionService adalah untuk mendaftarkan instans dengan tag khusus yang dapat Anda gunakan untuk memperluas perilaku mereka.Jika Anda menemukan diri menambahkan skrip yang sama ke banyak instansi berbeda, skrip yang menggunakan CollectionService mungkin lebih baik.

Label dapat ditambahkan atau dihapus melalui metode kelas ini seperti AddTag() atau RemoveTag() .Mereka juga dapat dikelola langsung di Studio melalui bagian Tag dari properti kejadian, atau melalui alat Editor Tag bawaan .

Replikasi

Ketika tag di-复制, semua tag pada instans di-复制 pada saat yang sama .Oleh karena itu, jika Anda menetapkan tag pada instansi dari klien maka tambahkan/hapus tag berbeda pada instansi yang sama dari server, tag lokal klien di instansi dihapuskan.Di StreamingEnabled tempat, instans dapat dihapus saat mereka meninggalkan area streaming klien.Jika instans seperti itu memasuki kembali area yang disiarkan, properti dan tag akan disinkronkan kembali dari server.Ini dapat menyebabkan perubahan yang dibuat oleh LocalScripts untuk ditulis ulang/dihapus.

Rangkuman

Metode

Acara

  • Memicu ketika tag ditambahkan ke instansi dan tag yang ditambahkan adalah satu-satunya kejadian tag tersebut di tempat itu.

  • Melepaskan api saat tag dihapus dari instansi dan tag yang dihapus tidak lagi digunakan di tempat mana pun.

Properti

Metode

AddTag

()

Metode ini menerapkan tag ke Instance , tidak melakukan apa pun jika tag sudah diterapkan ke kejadianitu.Berhasil menambahkan tag akan menyala sinyal yang dibuat oleh GetInstanceAddedSignal() dengan tag yang diberikan.

Peringatan
  • Tag instansi yang ditambahkan sisi klien akan dihapus jika server kemudian menambahkan atau menghapus tag pada instansi itu karena server menyalin semua tag bersama-sama dan menghapus tag sebelumnya.

  • Saat menandai kejadian, umumnya beberapa sumber daya digunakan untuk memberikan tag fungsionalnya, misalnya koneksi acara atau tabel.Untuk mencegah kebocoran memori, ide bagus adalah membersihkan ini (putus koneksi, atur ke nil , dll.) ketika tidak lagi dibutuhkan untuk tag.Lakukan ini saat menelepon RemoveTag() , memanggil Instance:Destroy() atau dalam fungsi yang terhubung ke sinyal yang dikembalikan oleh GetInstanceRemovedSignal() .

Parameter

instance: Instance
Nilai Default: ""
tag: string
Nilai Default: ""

Memberikan nilai

()

GetAllTags

Tulis Paralel

Kembalikan array dari semua tag dalam pengalaman.


Memberikan nilai

GetInstanceAddedSignal

Setelah memberikan tag (string), metode ini mem返回 sinyal yang dinyala di bawah dua kondisi:

Panggilan berikutnya ke metode ini dengan tag yang sama mengembalikan objek sinyal yang sama.Pertimbangkan juga memanggil GetTagged() untuk mendapatkan daftar instansi yang sudah memiliki tag (dan karena itu tidak akan menembakkan peristiwa jika sudah ada di DataModel ).

Lihat juga GetInstanceRemovedSignal() yang men返ikan peristiwa yang terbakar dalam kondisi serupa.

Parameter

tag: string

Tag untuk diperhatikan.

Nilai Default: ""

Memberikan nilai

Peristiwa yang menembak ketika Anda menambahkan tag ke kejadian.

Contoh Kode

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

Setelah memberikan tag (string), metode ini mem返回 sinyal yang dinyala di bawah dua kondisi:

Panggilan berikutnya ke metode ini dengan tag yang sama mengembalikan objek sinyal yang sama.Sinyal berguna untuk membersihkan sumber daya yang digunakan oleh instans yang sekali memiliki tag, seperti memutus koneksi.

Lihat juga GetInstanceAddedSignal() yang men返ikan peristiwa yang terbakar dalam kondisi serupa.

Parameter

tag: string

Tag untuk diperhatikan.

Nilai Default: ""

Memberikan nilai

Peristiwa yang menembak ketika Anda menghapus tag dari kejadian.

Contoh Kode

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
Tulis Paralel

Metode ini mengembalikan array instansi dengan tag yang diberikan yang merupakan keturunan dari DataModel.Menghapus tag menggunakan CollectionService:RemoveTag() atau Instance:RemoveTag() memastikan metode ini tidak mengembalikannya.

Jika Anda ingin mendeteksi semua instans dengan tag, keduanya hadir dan masa depan, gunakan metode ini untuk mengulangi instans sambil juga membuat koneksi ke sinyal yang dikembalikan oleh GetInstanceAddedSignal() .

Metode ini tidak menjamin pemesanan kembali instans yang dikembalikan.Selain itu, kemungkinan instans dapat memiliki tag yang diberikan kepada mereka tetapi tidak menjadi keturunan dari DataModel, misalnya orangtuanya adalah nil ; metode ini tidak akan mengembalikan instans seperti itu.

Parameter

tag: string

Tag untuk dicari.

Nilai Default: ""

Memberikan nilai

Instances

Sebuah array dari semua instansi dengan tag.

Contoh Kode

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

Tulis Paralel

Setelah diberikan Instance, metode ini akan mengembalikan array string yang merupakan tag yang diterapkan ke kejadian.

Metode ini berguna ketika Anda ingin melakukan sesuatu dengan beberapa tag instansi sekaligus, tetapi tidak efisien untuk memeriksa keberadaan satu tag.Untuk ini, gunakan HasTag() untuk memeriksa tag tunggal.

Parameter

instance: Instance

Instansi yang tagnya harus dikembalikan.

Nilai Default: ""

Memberikan nilai

Sebuah array string yang merupakan tag yang diterapkan pada instans yang diberikan.

Contoh Kode

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

Tulis Paralel

Metode ini menghasilkan apakah suatu Instance tertentu memiliki tag.

Dengan ekstensi, tag apa pun yang dikembalikan oleh panggilan ke GetTags() pada instans akan kembali true saat digunakan dengan metode ini.

Parameter

instance: Instance

Instansi untuk memeriksa keberadaan tag.

Nilai Default: ""
tag: string

Tag untuk memeriksa.

Nilai Default: ""

Memberikan nilai

Apakah instansi memiliki tag.

Contoh Kode

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

()

Metode ini menghapus tag dari kejadian. Berhasil menghapus tag akan menyala sinyal yang dibuat oleh GetInstanceRemovedSignal() dengan tag yang diberikan.

Saat menghapus tag, umumnya beberapa sumber daya digunakan untuk memberikan fungsi tag, misalnya koneksi acara atau tabel.Untuk mencegah kebocoran memori, ide bagus adalah membersihkan ini (putus koneksi, atur ke nil , dll.) ketika tidak lagi dibutuhkan untuk tag.

Parameter

instance: Instance

Instansi untuk menghapus tag dari.

Nilai Default: ""
tag: string

Tag untuk dihapus dari kejadian.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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")

Acara

TagAdded

Peristiwa ini terjadi ketika tag ditambahkan ke instansi dan tag yang ditambahkan adalah satu-satunya kejadian tag itu di tempat.

Parameter

tag: string

TagRemoved

Acara ini terjadi ketika tag dihapus dari instansi dan tag yang dihapus tidak lagi digunakan di tempat mana pun.

Parameter

tag: string