CollectionService

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa

CollectionService zarządza grupami (kolekcjami) instancji z tagami . Tagi są zestawami zmian zastosowanych na obiektach, które kopiują się z serwera na klienta. są one również zapisywane serwerowo, gdy miejsca są zapisywane.

Głównym użyciem CollectionService jest rejestrowanie instancji z określonymi tagami, które możesz użyć do rozszerzenia zachowań. Jeśli znajdujesz się dodając ten sam skrypt do wielu różnych obiektów, może lepiej będzie skrypt, który używa CollectionService.

Tagi można dodawać lub usuwać poprzez metody klasy, takie jak AddTag() lub RemoveTag(). Można je również zarządzać bezpośrednio w Studio poprzez sekcję Tagi w właściwościach instancjalub poprzez zbudowany narzędzie 1>

Replikacja

Gdy tagi się replikują, wszystkie tagi na serwerreplikują się w tym samym czasie . Dlatego jeśli ustawisz tag na obiekcie z serwer, to dodaj

Podsumowanie

Metody

Zdarzenia

Właściwości

Metody

AddTag

void

Dodanie Tagu zostanie zastosowane do Instance , nie robi nic, jeśli Tag został już zastosowany do instancji. Udane dodanie Tagu zostanie wykonane przez CollectionService:GetInstanceAddedSignal() z użyciem podanego Tagu.

Ostrzeżenie: Kiedy oznaczasz instancja, jest powszechną praktyką, że niektóre zasoby są używane do zapewnienia funkcjonalności tagu, na przykład połączenia wątku lub tabeli. Aby zapobiec wyciekom p

Parametry

instance: Instance
tag: string

Zwroty

void

GetAllTags

Zapis równoległy

Zwroty

GetInstanceAddedSignal

GetInstanceAdded otrzymuje tag (ciąg) i w zwrotuje sygnał, który działa pod dwoma warunkami:

Potencjalne wezwania metody z tym samym tagiem zwracają ten sam obiekt sygnału. Również wezwanie CollectionService:GetTagged() pozwala uzyskać listę obiektów, które już mają tag (i więc nie załóż własnego wrażenia, jeśli są już w Class.DataModel ).

Zobacz również CollectionService:GetInstanceRemovedSignal(), który powoduje, że wydarza się wydarzenie, które działa pod podobnymi warunkami.

Parametry

tag: string

Tag do obserwowania.


Zwroty

Wydarzenie, które się uruchamia, gdy dodasz tag do instancja.

Przykłady kodu

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 otrzymuje tag (ciąg) i wysyłuje sygnał, który działa pod dwoma warunkami:

Potencjalne wezwania do tej metody z tym samym tagiem zwracają ten sam obiekt sygnału. Sygnał jest użyteczny do czyszczenia zasobów używanych przez obiekty, które miały kiedyś tagi, takie jak odłączanie połączeń.

Zobacz również CollectionService:GetInstanceAddedSignal(), który powoduje, że wydarzenie zostanie uruchomione w podobnych warunkach.

Parametry

tag: string

Tag do obserwowania.


Zwroty

Wydarzenie, które się włącza, gdy usuniesz tag z instancja.

Przykłady kodu

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
Zapis równoległy

GetTagged zwraca maszewkę obiektów z określonym tagiem, które są potomkami DataModel ( game ). Takie tagi zostały dodane przy użyciu CollectionService:AddTag() , a usuw

Jeśli chcesz wykryć wszystkie obiekty z tagiem, zarówno obecne, jak i przyszłe, użyj tego metody, aby przejść przez obiekty podczas jednoczesnego wiązania się z sygnałem zwróconym przez CollectionService.GetInstanceAddedSignal.

Ten metod nie gwarantuje żadnego zamówienia zwróconych obiektów. Ponadto możliwe jest, że obiekty mogą mieć przypisany tag, ale nie być potomstwem z DataModel , czyli jego ojcem jest zero. Ta metoda nie będzie zwracać takich obiektów.

Parametry

tag: string

Tag do wyszukania.


Zwroty

Instances

Materiały wszystkich instancji z tagiem.

Przykłady kodu

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

Zapis równoległy

GetTags otrzymuje instancję i zwraca maszynę zmiennej liczby znaków, które są zastosowane do danej instancji.


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

Ten metod jest użyteczny, gdy chcesz zrobić coś z wieloma tagami na raz na obiekcie. Jest jednak nieefektywny, aby użyć tego metody, aby sprawdzić istnienie pojedynczego tagu. Dla tego użyj CollectionService:HasTag() , aby sprawdzić pojedynczy tag.

Parametry

instance: Instance

Przedmiot, których należy zwrócić tagi.


Zwroty

Materiały stron, które są tagami zastosowanymi do podanego obiektu.

Przykłady kodu

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

Zapis równoległy

HasTag zwraca, czy dany obiekt ma tag.

Zgodnie z rozszerzeniem, wszystkie znaki zwrotne z wezwania do CollectionService:GetTags() na obiekcie zwrócą prawdę, gdy zostaną użyte z tą metodą.

Parametry

instance: Instance

Instancja do sprawdzenia obecności tagu.

tag: string

Tag do sprawdzenia.


Zwroty

Czy instancja ma tag.

Przykłady kodu

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

UsuwanieTagu usuwa tag z instancja. Ta metoda nie zwraca błędu, jeśli obiekt nie miał tagu w pierwszym miejsce. Usuwanie powoduje powodzenie usunięcia tagu, który stworzył CollectionService:GetInstanceRemovedSignal() z podanym tagiem.

Gdy usuwa się tag, powszechnym jest, że niektóre zasoby są używane do zapewnienia funkcjonalności tagu, na przykład połączenia wątku lub tabel. Aby zapobiec wyciekom pamięci, dobre jest, aby je wyczyścić (otrzymuj, ustaw na zero itp.) po usunięciu tagu.

Parametry

instance: Instance

Instancja do usunięcia tagu z.

tag: string

Tag do usunięcia z instancja.


Zwroty

void

Przykłady kodu

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

Zdarzenia

TagAdded

Ten wążdź się uruchamia, gdy tag zostanie dodany do obiektu, a dodany tag jest jedyną wizytą tego tagu w miejsce.

Parametry

tag: string

TagRemoved

Ten wąż się urywa, gdy tag zostanie usunięty z obiektu i usunięty tag nie jest już używany w żadnym miejscew obiegu.

Parametry

tag: string