代码示例
集合生命周期和事件
local CollectionService = game:GetService("CollectionService")
-- 一个实时集合,包含标记为 "MapleLeaf" 的部件,这些部件是标记为 "MapleTree" 的模型的直接子项
local mapleLeaves: Collection = CollectionService:CreateCollection("Model.MapleTree > Part.MapleLeaf")
local function sway(leaf: Part, deltaTime: number)
leaf.CFrame *= CFrame.fromEulerAnglesXYZ(0, math.rad(20) * deltaTime, 0)
end
local function fall(leaf: Part)
leaf.Anchored = false
end
-- OnAdded 对于每个已经匹配的叶子触发一次,然后对于每个新的匹配
function mapleLeaves.OnAdded(leaf: Part)
leaf.Material = Enum.Material.Neon
end
-- OnRemoved 在叶子停止匹配时触发(未标记、重新父级到树外或被销毁)
function mapleLeaves.OnRemoved(leaf: Part)
leaf:Destroy()
end
-- RunService 别名:每个心跳为集合中的每个叶子触发一次
function mapleLeaves.OnHeartbeat(leaf: Part, deltaTime: number)
sway(leaf, deltaTime)
end
-- 实例事件包装:OnTouched 包装 BasePart.Touched
-- 没有 Touched 事件的集合成员会静默忽略此分配
function mapleLeaves.OnTouched(leaf: Part, other: BasePart)
fall(leaf)
end
-- 属性更改包装:当叶子变成棕色时反应
function mapleLeaves.OnPropertyChanged.Color(leaf: Part)
if leaf.Color == Color3.fromRGB(124, 92, 70) then
fall(leaf)
end
end
-- 命令式地将当前集合中的每个叶子设置为绿色
mapleLeaves:ForEach(function(leaf: Part)
leaf.Color = Color3.fromRGB(0, 255, 0)
end)API 参考
属性
方法
Destroy
Collection:Destroy()