Skip to content

RemoteEvent ​

远程事件用于客户端与服务端之间的异步单向通信,服务端可通过 FireClient 向指定玩家推送消息,或用 FireAllClients 广播给全部客户端,客户端则通过 FireServer 把数据上报给服务端。接收侧分别由 OnServe...

概览 ​

远程事件用于客户端与服务端之间的异步单向通信,服务端可通过 FireClient 向指定玩家推送消息,或用 FireAllClients 广播给全部客户端,客户端则通过 FireServer 把数据上报给服务端。接收侧分别由 OnServerEvent 与 OnClientEvent 监听,因此它是一条可双向收发、但不保存业务状态的跨端消息通道。

可通过 RemoteEvent.New(eventName) 构造

代码示例 ​

客户端发送事件,服务端监听

lua
-- @runtime client
local remoteEvent = RemoteEvent.New('RoundStateChanged')
remoteEvent:FireServer({ state = 'Ready' })

-- 服务端脚本中使用 remoteEvent.OnServerEvent 监听该事件

函数 ​

FireAllClients ​

签名:FireAllClients(args: Any?)

从服务端向所有客户端广播事件。

参数类型说明
argsAny事件参数

服务端向所有客户端广播

lua
-- @runtime server
local remoteEvent = RemoteEvent.New('RoundStateChanged')
remoteEvent:FireAllClients({ state = 'Started' })

FireClient ​

签名:FireClient(player: Player, args: Any?)

RemoteEvent 的方法,由服务端向指定的单个玩家客户端发送消息。第一个参数 player 指定接收消息的玩家对象,第二个可选参数 args 为随消息一起传递的自定义数据。

参数类型说明
playerPlayer目标玩家
argsAny事件参数

服务端向指定客户端发送事件

lua
-- @runtime server
local Players = game:GetService('Players')
local remoteEvent = RemoteEvent.New('PrivateMessage')
local player = Players:GetPlayers()[1]
if player ~= nil then
    remoteEvent:FireClient(player, { text = 'hello' })
end

FireServer ​

签名:FireServer(args: Any?)

从客户端向服务端发送事件。

参数类型说明
argsAny事件参数

客户端向服务端发送事件

lua
-- @runtime client
local remoteEvent = RemoteEvent.New('RoundStateChanged')
remoteEvent:FireServer({ state = 'Ready' })

事件 ​

OnServerEvent ​

签名:OnServerEvent(player: Player, args: Any)

服务端监听客户端消息的信号

参数类型说明
playerPlayer触发事件的玩家
argsAny事件参数

OnClientEvent ​

签名:OnClientEvent(args: Any)

客户端监听服务端消息的信号

参数类型说明
argsAny事件参数