CollectionService 는 인스턴스의 그룹(컬렉션)을 관리합니다( 태그 가 있). 태그는 서버에서 클라이언트로 복제되는 개체의 집합입니다. 그들은 장소를 저장할 때 인스턴스의 시리즈화된 형식이기도 합니다.
Class.CollectionService 의 주요 사용은 특정 태그가 있는 인스턴스를 등록하여 동작을 확장하는 데 사용할 수 있습니다. 예를 들어, 여러 개체에 동일한 스크립트를 추가하는 경우 CollectionService 를 사용하는 것이 좋습니다.
태그는 이 클래스의 메서드를 통해 추가 또는 제거할 수 있습니다 AddTag() 또는 내장 된 RemoveTag() . 태그는 또한 Studio의 태그 섹션에서 직접 관리할 수 있거나 내장
복제
태그가 복제되면 모든 태그가 동시에 복제됩니다. 따라서 클라이언트에서 태그를 설정하면 서버에서 태그를
요약
메서드
Class.Instance 에 태그를 적용합니다.
지정된 태그를 개체에 추가할 때 발생하는 신호를 반환합니다.
지정된 태그를 인스턴스에서 제거할 때 발생하는 신호를 반환합니다.
지정된 태그로 게임에서 개체 배열을 반환합니다.
지정된 개체에 적용된 모든 태그의 배열을 가져옵니다.
개체에 지정된 태그가 있는지 여부를 확인하십시오.
인스턴스에서 태그를 제거합니다.
이벤트
태그가 개체에 추가되고 추가된 태그가 장소에서 유일한 해당 태그인 경우 발생합니다.
개체에서 태그를 제거하고 제거된 태그를 더 이상 장소에서 사용하지 않으면 화재가 발생합니다.Fires when a tag is removed from an object and the removed tag is no longer used anywhere in the 플레이스.
속성
메서드
AddTag
AddTag는 태그를 인스턴스에 적용하지 않습니다. 태그가 이미 인스턴스에 적용되었으면 태그가 여전히 적용되지 않도록 하지만 태그가 이미 적용되었다면 Instance 에 의해 생성된 신호를 수신합니다.
주의: 인스턴스에 태그를 표시할 때 일부 리소스를 사용하여 태그의 기능을 제공하는 경우가 많습니다. 이를 방지하기 위해 필요하지 않을 때 이러
매개 변수
반환
GetInstanceAddedSignal
GetInstanceAdded에 태그(문자열)가 지정되고 두 조건 중 하나에 따라 신호가 발생합니다.
- 지정된 태그가 있는 인스턴스는 DataModel 의 하위로 추가되며, 예를 들어 Instance.Parent 또는 유사한 값을 설정하여 추가됩니다.
이 메서드에 동일한 태그를 가진 후속 호출은 동일한 신호 개체를 반환합니다. CollectionService:GetTagged() 를 호출하여 이미 태그가 있는 개체 목록을 얻으십시오(그리고 이렇게 하면 이벤트가 이미 발생하더라도 클래스 DataModel 에 있는 개체를 나열하지 않음).
또한 참조하십시오 CollectionService:GetInstanceRemovedSignal(), 이는 유사한 조건에서 발생하는 이벤트를 반환합니다.
매개 변수
시계할 태그를 지정합니다.
반환
태그를 인스턴스에 추가할 때 발생하는 이벤트.
코드 샘플
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에 태그(문자열)가 지정되고 두 조건 중 하나에 따라 신호를 반환합니다.
- Class.DataModel (게임)의 인스턴스 내에서 태그가 제거되는 경우 CollectionService:RemoveTag() 또는 Instance:RemoveTag() 을 사용하여.
- 지정된 태그가 있는 인스턴스는 DataModel 의 하위로 제거되며, 예를 들어, Instance.Parent 또는 유사한 내용으로 설정을 해제하면 됩니다.
이 메서드에 동일한 태그를 가진 후속 호출은 동일한 신호 개체를 반환합니다. 신호는 태그가 있던 개체를 다시 연결하는 등의 개체에서 사용자를 보호하는 데 유용합니다.
또한 참조하십시오 CollectionService:GetInstanceAddedSignal(), 이는 유사한 조건에서 발생하는 이벤트를 반환합니다.
매개 변수
시계할 태그를 지정합니다.
반환
인스턴스에서 태그를 제거할 때 발생하는 이벤트.
코드 샘플
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 )에 추가된 태그입니
모든 개체를 태그로 검색하려면, 현재와 미래의 모든 개체를 반복하는 동시에 CollectionService.GetInstanceAddedSignal에 대한 연결을 만드십시오.
이 메서드는 반환된 개체의 순서를 보장하지 않습니다. 또한, 개체에 지정된 태그를 가질 수 있지만 DataModel의 후손이 아닐 수 있습니다. 이 메서드는 순서가 없는 개체를 반환하지 않습니다.
매개 변수
검색할 태그입니다.
반환
태그가 있는 모든 인스턴스의 배열입니다.
코드 샘플
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는 인스턴스를 가지고 주어진 문자열 배열을 반환합니다, 이는 지정된 개체에 적용된 태그입니다.
local CollectionService = game:GetService("CollectionService")local object = workspace.Modellocal tags = CollectionService:GetTags(object)print("The object " .. object:GetFullName() .. " has tags: " .. table.concat(tags, ", "))
이 메서드는 개체에 여러 태그를 한 번에 지정할 때 유용합니다. 그러나 이 메서드를 사용하여 단일 태그가 존재하는지 확인하는 것은 효율적이지 않습니다. 이를 위해 CollectionService:HasTag() 를 사용하여 단일 태그를 확인하십시오.
매개 변수
태그가 반환되어야 하는 개체입니다.
반환
지정된 개체에 적용된 문자열 배열입니다.
코드 샘플
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 은 지정된 개체에 태그가 있는지 여부를 반환합니다.
- 태그를 추가하려면 CollectionService:AddTag()를 사용하여 이 메서드가 반환되도록 합니다.
- 이 메서드를 사용하여 태그를 제거하면 CollectionService:RemoveTag()으로 잘못되었습니다.
확장에 따라 개체에서 CollectionService:GetTags()로 호출한 모든 태그는 이 메서드를 사용할 때 사용자에게 반환됩니다.
매개 변수
반환
인스턴스에 태그가 있는지 여부.
코드 샘플
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는 인스턴스에서 태그를 제거합니다. 이 메서드는 태그가 없는 경우에도 오류가 발생하지 않습니다. 태그를 성공적으로 제거하면 CollectionService:GetInstanceRemovedSignal() 가 생성한 신호가 발생합니다.
태그를 제거할 때 일부 리소스는 이벤트 연결이나 테이블과 같은 태그 기능을 제공하는 데 사용됩니다. 메모리 누출을 방지하려면 이러한 리소스를 더 이상 필요로 하지 않을 때 (더 이상 필요하지 않음 설정 등) 이렇게 정리하는 것이 좋습니다.
매개 변수
반환
코드 샘플
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")