Skip to content

Connection ​

概览 ​

字段值
KindData · 数据 Data
Realmcommon

Connection 是事件订阅的句柄,代表一次有效的事件监听连接。它由 Signal:Connect() 返回,用于在不再需要时取消监听,防止内存泄漏。

适用场景 ​

当需要监听某个事件(如属性变化、玩家加入)时,通过 Signal:Connect() 获取 Connection 实例,并在处理完毕后调用 Disconnect() 取消订阅。

使用要点 ​

通过 Signal:Connect() 获取 Connection 实例,例如 local conn = unit:GetPropertyChangedSignal("Icon"):Connect(handler)。在不再需要监听时调用 conn:Disconnect() 取消连接。

注意事项 ​

Connection 是事件订阅的句柄,由 Signal:Connect() 返回,不可直接构造。在不再需要监听时调用 Disconnect() 取消订阅,避免内存泄漏;尤其注意临时监听(如按回合订阅的事件)必须在回合结束时 Disconnect。示例代码必须自包含:通过 Signal:Connect() 获取实例,禁止使用未声明的 player/character/unit 场景变量。

代码示例 ​

按业务生命周期管理事件连接 ​

lua
-- @runtime client
local Players = game:GetService('Players')
local connection = Players.PlayerAdded:Connect(function(player)
    print('玩家加入:', player:GetName())
end)

local function stopListening()
    connection:Disconnect()
end

-- 在回合或界面生命周期结束时调用 stopListening()

函数 (1) ​

Disconnect ​

签名:Disconnect() -> void

断开当前连接,停止接收该连接所监听的事件。

返回值 void

示例代码

在生命周期结束时取消事件订阅

lua
-- @runtime client
local Players = game:GetService('Players')
local connection = Players.PlayerAdded:Connect(function(player)
    print('玩家加入:', player:GetName())
end)

local function stopListening()
    connection:Disconnect()
end

-- 在不再需要接收 PlayerAdded 时调用 stopListening()