CollectionService

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst

CollectionService verwaltet Gruppen (Kollektionen) von Instanzen mit Tags . Tags sind Sätze von Strings, die auf Objekte angewendet werden, die vom Server auf den Client repliziert werden. Sie werden auch serialisiert, wenn Plätze gespeichert werden.

Die primäre Verwendung von CollectionService ist es, Instanzen mit spezifischen Tags zu registrieren, die Sie verwenden, um ihr Verhalten zu erweitern. Wenn Sie sich finden, dass Sie das gleiche Skript zu vielen verschiedenen Objekten hinzufügen, möglicherweise ein Skript, das CollectionService verwendet, wäre besser.

Tags können über die Methoden dieser Klasse hinzugefügt oder entfernt werden, z. B. AddTag() oder RemoveTag(). Sie können auch direkt in Studio durch die Tags-Sektion der Eigenschaften verwaltet werden oder durch das integrierte 1> Tool.

Replikation

Wenn Tags replicate, alle Tags auf einem Objekt werden gleichzeitig repliziert . Wenn Sie also ein Tag auf einem Objekt vom Serversetzen, fügen Sie/entfernen Sie einen anderen

Zusammenfassung

Methoden

Ereignisse

  • Feuert, wenn ein Tag zu einem Objekt hinzugefügt wird und der hinzugefügte Tag die einzige Vorkommnis dieses Tags im Ortist.

  • Feuert, wenn ein Tag von einem Objekt entfernt wird und der entfernte Tag nicht mehr überall im Ort verwendet wird.

Eigenschaften

Methoden

AddTag

void

AddTag wird ein Tag an ein Instance anwenden, was nichts tut, wenn der Tag bereits auf das Instanzangewendet wird. Der Erfolg des Hinzufügens eines Tags wird ein von CollectionService:GetInstanceAddedSignal() erstelltes Signal mit dem angegebenen Tag feuern, mit dem das Item erfolgreich hinzugefügt wird.

Warnung: Wenn Sie ein Beispiel auf eine Instanz标记, ist es üblich, dass einige Ressourcen verwendet werden, um der Tag seine Funktionalität zu geben, z. B. Ereignisverbindungen oder Tabellen. Um den Speicherausfall zu verhindern, ist es eine gute Idee, diese zu

Parameter

instance: Instance
tag: string

Rückgaben

void

GetAllTags

Parallel schreiben

Rückgaben

GetInstanceAddedSignal

GetInstanceAdded erhält ein Tag (eine Strings) und gibt ein Signal zurück, das unter zwei Bedingungen ausgelöst wird:

Aufeinanderfolgende Aufrufe dieser Methode mit demselben Tag geben dieselben Signal-Objekt zurück. Betrachten Sie auch CollectionService:GetTagged(), um eine Liste von Objekten zu erhalten, die bereits ein Tag haben (und damit das Ereignis nicht auslösen, wenn sie bereits in der DataModel sind).

Siehe auch CollectionService:GetInstanceRemovedSignal(), das ein Ereignis zurückgibt, das unter ähnlichen Bedingungen ausgeführt wird.

Parameter

tag: string

Der Tag, auf den Sie warten müssen.


Rückgaben

Ein Ereignis, das ausgeht, wenn du dem Tag ein Instanz hinzufügst.

Code-Beispiele

Deadly Bricks using CollectionService

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 erhält ein Tag (eine Strings) und gibt ein Signal zurück, das unter zwei Bedingungen feuert:

Aufeinanderfolgende Aufrufe dieser Methode mit demselben Tag geben dieselben Signal-Objekt zurück. Das Signal ist nützlich, um Ressourcen zu reinigen, die einst Tags hatten, z. B. Verbindungen abbrechen.

Siehe auch CollectionService:GetInstanceAddedSignal(), das ein Ereignis zurückgibt, das unter ähnlichen Bedingungen ausgeführt wird.

Parameter

tag: string

Der Tag, auf den Sie warten müssen.


Rückgaben

Ein Ereignis, das ausgeht, wenn du das Tag von einer Instanz entfernst.

Code-Beispiele

Deadly Bricks using CollectionService

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

Instances
Parallel schreiben

GetTagged gibt ein Array von Objekten mit einem bestimmten Tag zurück, die Nachkommen des DataModel ( game ) sind. Solche Tags wurden mit CollectionService:AddTag() hinzugefügt, und das Entfer

Wenn Sie alle Objekte mit einem Tag erkennen möchten, sowohl die gegenwärtigen als auch die zukünftigen, verwenden Sie diese Methode, um über Objekte zu wiederholen, während Sie auch eine Verbindung mit einem von CollectionService.GetInstanceAddedSignal herstellen.

Diese Methode garantiert keine Bestellung der zurückgegebenen Objekte. Darüber hinaus ist es möglich, dass Objekte die zugewiesene ID haben, aber kein Nachkommen des DataModel , d.h. sein Elternteil ist null. Diese Methode wird keine solchen Objekte zurückgeben.

Parameter

tag: string

Die Suchanfrage.


Rückgaben

Instances

Ein Array von allen Instanzen mit dem Tag.

Code-Beispiele

Deadly Bricks using CollectionService

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

Parallel schreiben

GetTags erhält eine Instanz und gibt eine Reihe von Strings zurück, die auf das gegebene Objekt angewendet werden.


local CollectionService = game:GetService("CollectionService")
local object = workspace.Model
local tags = CollectionService:GetTags(object)
print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))

Diese Methode ist nützlich, wenn Sie etwas mit mehreren Tags auf ein Objekt gleichzeitig tun möchten. jedoch wäre es ineffizient, diese Methode zu verwenden, um auf die Existenz eines einzelnen Tags zu überprüfen. für dies, verwenden Sie CollectionService:HasTag() , um auf einen einzelnen Tag zu überprüfen.

Parameter

instance: Instance

Das Objekt, whose Tags zurückgegeben werden sollen.


Rückgaben

Ein Array von Strings, die auf das gegebene Objekt angewendet werden.

Code-Beispiele

Using Tags and CollectionService

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

Parallel schreiben

HasTag gibt zurück, ob ein bestimmtes Objekt ein Tag hat.

Durch Erweiterung werden alle Tags, die von einer Anrufe an CollectionService:GetTags() auf ein Objekt zurückgegeben, mit diesem Methoden verwendet, wenn es mit diesem Methoden verwendet wird.

Parameter

instance: Instance

Die Instanz zum Überprüfen der Präsenz eines Tags.

tag: string

Der Tag, nach dem zu suchen.


Rückgaben

Ob die Instanz den Tag hat.

Code-Beispiele

Using Tags and CollectionService

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

void

RemoveTag wird ein Tag von einer Instanz entfernen. Diese Methode wird keinen Fehler anzeigen, wenn das Objekt keinen Tag in der ersten Orthat. Der Erfolg beim Entfernen eines Tags wird mit dem von CollectionService:GetInstanceRemovedSignal() mit dem angegebenen Tag feuern.

Wenn ein Tag entfernt wird, ist es üblich, dass einige Ressourcen verwendet werden, um der Tag seine Funktionalität zu geben, z. B. Ereignisverbindungen oder Tabellen. Um den Speicher freizugeben, ist es eine gute Idee, dies zu tun (verbinden, auf null setzen usw), wenn er für einen Tag nicht mehr benötigt wird.

Parameter

instance: Instance

Die Instanz, von der der Tag entfernt wird.

tag: string

Tag, den Tag zu entfernen, der von der Instanz.


Rückgaben

void

Code-Beispiele

Using Tags and CollectionService

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

Ereignisse

TagAdded

Dieses Ereignis wird ausgelöst, wenn ein Tag zu einem Objekt hinzugefügt wird, und der hinzugefügte Tag die einzige Vorkommnis dieses Tags im Ort ist.

Parameter

tag: string

TagRemoved

Dieses Ereignis wird ausgelöst, wenn ein Tag von einem Objekt entfernt wird und der entfernte Tag nicht mehr überall im Ort verwendet wird.

Parameter

tag: string