CollectionService

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza

CollectionService gestisce i gruppi (lezioni) delle istanze con tag . I tag sono set di stringhe applicate agli oggetti che si replica dal server al client. Sono anche serializzati quando i luoghi vengono salvati.

L'uso principale di CollectionService è registrare istanze con tag specifici che puoi utilizzare per estendere il loro comportamento. Se ti trovi a aggiungere lo stesso script a molti oggetti diversi, forse uno script che utilizza CollectionService sarebbe meglio.

I tag possono essere aggiunti o rimossi tramite i metodi di questa classe come AddTag() o RemoveTag() . Possono anche essere gestiti direttamente in Studio attraverso la sezione Tag delle proprietà di un'esempio, o attraverso lo strumento 1> Tag Editor1> incorporato.

Replicazione

Quando le etichette si replicano, tutte le etichette su un oggetto si replicano allo stesso tempo . Quindi, se impostate un'etichetta su un oggetto dal

Sommario

Metodi

Eventi

  • Si attiva quando viene aggiunto un tag a un oggetto e il tag aggiunto è l'unica occorrenza di quel tag nel Posto.

  • Si attiva quando viene rimosso un tag da un oggetto e il tag rimosso non viene più utilizzato da nessuna parte nel Posto.

Proprietà

Metodi

AddTag

void

AddTag will apply a tag to an Instance , doing nothing if the tag is already applied to the esempio. Successfully adding a tag will fire a signal created by CollectionService:GetInstanceAddedSignal() with the given tag.

Avviso: Quando si etichetta un'istanza, è comune che alcune risorse siano utilizzate per dare la funzionalità dell'istanza, ad esempio connessioni di eventi o tabelle. Per prevenire le perdite di memoria, è una buona idea pulire queste up (disconetti, imposta

Parametri

instance: Instance
tag: string

Restituzioni

void

GetAllTags

Scrivi Parallelo

Restituzioni

GetInstanceAddedSignal

GetInstanceAdded viene fornito un tag (una Stringa) e restituisce un segnale che si attiva in due condizioni:

Le chiamate successive a questo metodo con lo stesso tag restituiscono lo stesso oggetto segnale. Considere anche di chiamare CollectionService:GetTagged() per ottenere una lista di oggetti che hanno già un tag (e quindi non attivano l'evento se sono già in DataModel ).

Vedi anche CollectionService:GetInstanceRemovedSignal() , che restituisce un evento che si attiva in condizioni simili.

Parametri

tag: string

Il tag per guardare.


Restituzioni

Un evento che si attiva quando aggiungi il tag a un'esempio.

Campioni di codice

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 ha un tag (una Stringa) e restituisce un segnale che si attiva sotto due condizioni:

Le chiamate successive a questo metodo con lo stesso tag restituiscono lo stesso oggetto segnale. Il segnale è utile per pulire le risorse utilizzate dagli oggetti che una volta avevano i tag, come la disconnessione delle connessioni.

Vedi anche CollectionService:GetInstanceAddedSignal() , che restituisce un evento che si attiva in condizioni simili.

Parametri

tag: string

Il tag per guardare.


Restituzioni

Un evento che si attiva quando rimuovi il tag da un'esempio.

Campioni di codice

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
Scrivi Parallelo

GetTagged restituisce un array di oggetti con un tag specificato che sono discendenti del DataModel ( game ). Tali tag sono stati aggiunti utilizzando CollectionService:AddTag() , e rimuov

Se vuoi rilevare tutti gli oggetti con un tag, sia presenti che futuri, usa questo metodo per itere sui singoli oggetti mentre crei anche una connessione a un segnale restituito da CollectionService.GetInstanceAddedSignal .

Questo metodo non garantisce alcun ordine degli oggetti restituiti. Inoltre, è possibile che gli oggetti possano avere il tag assegnato, ma non essere discendenti del DataModel , cioè il suo padre è zero. Questo metodo non restituirà tali oggetti.

Parametri

tag: string

Il tag per cercare.


Restituzioni

Instances

Un array di tutte le istanze con il tag.

Campioni di codice

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

Scrivi Parallelo

GetTags ottiene un'istanza e restituisce un array di stringhe, che sono le etichette applicate all'oggetto fornito.


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

Questo metodo è utile quando vuoi fare qualcosa con più tag contemporaneamente su un oggetto. Tuttavia, sarebbe inefficiente utilizzare questo metodo per controllare l'esistenza di un singolo tag. Per questo, usa CollectionService:HasTag() per controllare per l'esistenza di un singolo tag.

Parametri

instance: Instance

L'oggetto cui i suoi tag devono essere restituiti.


Restituzioni

Un array di stringhe che sono le etichette applicate all'oggetto fornito.

Campioni di codice

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

Scrivi Parallelo

HasTag restituisce se un oggetto specifico ha un tag.

Per estensione, qualsiasi tag restituito da un call to CollectionService:GetTags() su un oggetto restituirà true quando viene utilizzato con questo metodo.

Parametri

instance: Instance

L'istanza per controllare la presenza di un tag.

tag: string

Il tag per controllare.


Restituzioni

Se l'istanza ha il tag.

Campioni di codice

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 rimuoverà un tag da un'esempio. Questo metodo non mostrerà un errore se l'oggetto non aveva il tag in primo Posto. Il metodo di rimozione del tag rimuoverà con successo un segnale creato da CollectionService:GetInstanceRemovedSignal() con il tag specificato.

Quando si rimuove un tag, è comune che alcune risorse siano utilizzate per fornire la funzionalità del tag, ad esempio connessioni di eventi o tabelle. Per prevenire le perdite di memoria, è una buona idea pulire queste (disconetti, imposta a zero, ecc.) quando non sono più necessarie per un tag.

Parametri

instance: Instance

L'istanza per rimuovere il tag.

tag: string

Il tag da rimuovere dall'esempio.


Restituzioni

void

Campioni di codice

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

Eventi

TagAdded

Questo evento si attiva quando viene aggiunto un tag a un oggetto e il tag aggiunto è l'unica occorrenza di quel tag nel Posto.

Parametri

tag: string

TagRemoved

Questo evento si attiva quando viene rimosso un tag da un oggetto e il tag rimosso non viene più utilizzato da nessuna parte nel Posto.

Parametri

tag: string