主题
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?)
从服务端向所有客户端广播事件。
| 参数 | 类型 | 说明 |
|---|---|---|
args | Any | 事件参数 |
服务端向所有客户端广播
lua
-- @runtime server
local remoteEvent = RemoteEvent.New('RoundStateChanged')
remoteEvent:FireAllClients({ state = 'Started' })FireClient
签名:FireClient(player: Player, args: Any?)
RemoteEvent 的方法,由服务端向指定的单个玩家客户端发送消息。第一个参数 player 指定接收消息的玩家对象,第二个可选参数 args 为随消息一起传递的自定义数据。
| 参数 | 类型 | 说明 |
|---|---|---|
player | Player | 目标玩家 |
args | Any | 事件参数 |
服务端向指定客户端发送事件
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' })
endFireServer
签名:FireServer(args: Any?)
从客户端向服务端发送事件。
| 参数 | 类型 | 说明 |
|---|---|---|
args | Any | 事件参数 |
客户端向服务端发送事件
lua
-- @runtime client
local remoteEvent = RemoteEvent.New('RoundStateChanged')
remoteEvent:FireServer({ state = 'Ready' })事件
OnServerEvent
签名:OnServerEvent(player: Player, args: Any)
服务端监听客户端消息的信号
| 参数 | 类型 | 说明 |
|---|---|---|
player | Player | 触发事件的玩家 |
args | Any | 事件参数 |
OnClientEvent
签名:OnClientEvent(args: Any)
客户端监听服务端消息的信号
| 参数 | 类型 | 说明 |
|---|---|---|
args | Any | 事件参数 |
