CollectionService

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Dịch Vụ

CollectionService quản lý nhóm (bộ sưu tập) của các instan với nhãn . Nhãn là các dàn chuỗi được áp dụng cho những nơi được sao chép từ máy chủ sang client. Chúng cũng được serialize khi nơi được lưu.

Mục đích chính của CollectionService là đăng nhập các instância với các thẻ cụ thể mà bạn có thể sử dụng để mở rộng hành vi của chúng. Nếu bạn tìm thấy bản thân mình thêm cùng một script vào nhiều đối tượng khác nhau, có lẽ một script sử dụng Class.CollectionService</

Nhãn có thể được thêm hoặc bị xóa bằng các phương pháp của lớp này, chẳng hạn như AddTag() hoặc RemoveTag() . Họ cũng có thể được quản lý trực tiế

nhân bản

Khi các thẻ bị sao chép, tất cả các thẻ trên một đối tượng được sao chép cùng

Tóm Tắt

Phương Pháp

Sự Kiện

  • Lửa khi một nhãn được thêm vào một đối tượng và nhãn được thêm là một-đơn vị duy nhất của nó trong địa điểm.

  • Lửa khi một nhãn đã được xóa khỏi một đối tượng và nhãn đã không còn được sử dụng ở bất kỳ nơi nào trong địa điểmđó.

Thuộc Tính

Phương Pháp

AddTag

void

Thêm nhãn sẽ áp dụng một nhãn vào một Instance, không làm gì nếu nhãn đã được áp dụng cho ví dụ / trường hợp. Thành công thêm một nhãn sẽ kích hoạt một tín hiệu tạo bởi CollectionService:GetInstanceAddedSignal() với nhãn đã được cung cấp.

Cảnh báo: Khi gắn nhãn một ví dụ / trường hợp, thông thường một số tài nguyên sẽ được sử dụng để cung cấp chức năng cho nhãn, ví dụ như k

Tham Số

instance: Instance
tag: string

Lợi Nhuận

void

GetAllTags

Ghi Song Song

Lợi Nhuận

GetInstanceAddedSignal

GetInstanceAdded được cho một thẻ (một chuỗi) và trả lại một tín hiệu được kích hoạt dưới hai điều kiện:

Các cuộc gọi tiếp theo đến phương thức này với cùng một thẻ trả về cùng một thể hiện. Hãy xem xét gọi CollectionService:GetTagged() để lấy danh sách các thống kê đã có thẻ (và do đó không bắt lỗi sự kiện nếu họ đã ở trong Class.

Xem thêm CollectionService:GetInstanceRemovedSignal() , which returns an event that fires under similar conditions.

Tham Số

tag: string

Nhãn để xem.


Lợi Nhuận

Một sự kiện xảy ra khi bạn thêm nhãn vào một ví dụ / trường hợp.

Mẫu mã

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 được cho một thẻ (một chuỗi) và trả lại một tín hiệu để kích hoạt dưới hai điều kiện:

  • Nhãn được xóa khỏi một instace trong DataModel (trò chơi) bằng cách sử dụng CollectionService:RemoveTag() hoặc Instance:RemoveTag() .
  • Một instância với nhãn đã được xóa như một con cháu của Class.DataModel , ví dụ như bỏ để Class.Instance.Parent hoặc tương tự.

Các cuộc gọi tiếp theo đến phương pháp này với cùng một thẻ trả về cùng một thiết bị tín hiệu. Thiết bị tín hiệu hữu ích cho việc làm sạch các nguồn lực đã được sử dụng bởi các thiết bị có một lần có nhãn, chẳng hạn như kết nối bị mất.

Xem thêm CollectionService:GetInstanceAddedSignal() , which returns an event that fires under similar conditions.

Tham Số

tag: string

Nhãn để xem.


Lợi Nhuận

Một sự kiện xảy ra khi bạn loại bỏ nhãn từ một ví dụ / trường hợp.

Mẫu mã

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
Ghi Song Song

GetTagged返回一个阵列的对象以提供给定的标签,这些标签是DataModel (game )的子集。 Các thẻ này đã được thêm bằng cách sử dụ

Nếu bạn muốn xác định tất cả các thống kê với một thẻ, cả hiện tại và tương lai, hãy sử dụng phương pháp này để lặp lại trên các thống kê trong khi cũng tạo một kết nối đến một tín hiệu được trả lại bởi CollectionService.GetInstanceAddedSignal .

Phương thức này không đảm bảo bất kỳ yêu cầu nào đối với các đối tượng đã được trả lại. Ngoài ra, có thể có những thẻ được gán cho các đối tượng, nhưng không phải là con cháu của DataModel , tức là nó không phải là con cháu của nil.

Tham Số

tag: string

Nhãn để tìm kiếm.


Lợi Nhuận

Instances

Một dàn bộ tất cả các instância với nhãn.

Mẫu mã

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

Ghi Song Song

GetTags được cấp một instância và trả một loạt các chuỗi, which are the tags applied to the given object.


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

Phương pháp này hữu ích khi bạn muốn làm điều gì đó với nhiều nhãn ở một đối tượng. Tuy nhiên, nó sẽ là một lãng phí khi sử dụng phương pháp này để kiểm tra sự tồn tại của một nhãn duy nhất. Để làm điều này, hãy sử dụng Class.CollectionService:HasTag

Tham Số

instance: Instance

Các thống kê đối tượng nên được trả lại.


Lợi Nhuận

Một dàn chuỗi được ứng dụng cho đối tượng đã được chỉ định.

Mẫu mã

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

Ghi Song Song

HasTag trả về có hay không có nhãn cho một đối tượng được cung cấp.

Bằng cách mở rộng, bất kỳ nhãn nào được trả lại bởi một cuộc gọi đến CollectionService:GetTags() trên một đối tượng sẽ trả lại true khi được sử dụng với phương pháp này.

Tham Số

instance: Instance

Các thành phần để kiểm tra sự hiện diện của nhãn.

tag: string

Nhãn để kiểm tra.


Lợi Nhuận

Có phải instâne có nhãn.

Mẫu mã

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 sẽ xóa một thẻ từ một ví dụ / trường hợp. Phương thức này sẽ không thả một lỗi nếu đối tượng không có thẻ ở đầu địa điểm. Thành côngfully thoát một thẻ bằng cách đưa ra một dấu hiệu tạo bởi CollectionService:GetInstanceRemovedSignal() với thẻ đã được cung cấp.

Khi loại bỏ một nhãn, thông thường có một số tài nguyên được sử dụng để cung cấp chức năng cho nhãn, ví dụ như kết nối sự kiện hoặc bảng. Để ngăn chặn lỗi bộ nhớ, tốt nhất là làm sạch những thứ này (đăng nhập, đặt lại, v.v.) khi không còn cần thiết cho

Tham Số

instance: Instance

Instância để xóa nhãn.

tag: string

Nhãn để xóa khỏi ví dụ / trường hợp.


Lợi Nhuận

void

Mẫu mã

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

Sự Kiện

TagAdded

Sự kiện này bắt đầu khi một nhãn được thêm vào một đối tượng và nhãn được thêm là một sat thứ duy nhất của nó ở địa điểm đó.

Tham Số

tag: string

TagRemoved

Sự kiện này bắt đầu khi một nhãn được loại bỏ khỏi một đối tượng và nhãn đã không còn được sử dụng ở bất kỳ nơi nào trong địa điểmđó.

Tham Số

tag: string