🚩 事件
🎒 示例
信息
远程 代表对面的端,例如:如果我是客户端,远程就是服务器。如果我是服务器,远程就是客户端。
基础用法
Client/Index.lua
-- 注册本地活动(本地 = 仅限客户端)
Events.Subscribe("MyLocalEvent", function(my_text)
Console.Log("本地已收到事件!" .. my_text)
-- 输出“本地已收到事件!你好 nanos world!”
end)
-- 在所有本地包中调用本地事件
Events.Call("MyLocalEvent", "你好 nanos world!")
-- 注册服务器事件(远程 = 服务器)
Events.SubscribeRemote("MyClientEvent", function(my_text)
Console.Log("已收到来自服务器的事件!" .. my_text)
-- 输出“已收到来自服务器的事件!你好 nanos world!”
end)
-- 在所有服务器包中调用远程事件
Events.CallRemote("MyServerEvent", Reliability.Reliable, "你好 nanos world!")
信息
在服务器上,注册远程事件包含一个额外的首个参数:Player,即发送该事件的客户端。
Server/Index.lua
-- 注册本地事件(本地 = 仅服务器)
Events.Subscribe("MyLocalEvent", function(my_text)
Console.Log("本地已收到事件!" .. my_text)
-- 输出“本地已收到事件!你好 nanos world!”
end)
-- 在所有本地包中调用本地事件
Events.Call("MyLocalEvent", "hello nanos world!")
-- 注册客户端事件(远程 = 客户端)
Events.SubscribeRemote("MyServerEvent", function(player, my_text)
Console.Log(player:GetName() .. " 发来一条来自客户端的事件!" .. my_text)
-- 输出“Syed 发来一条来自客户端的事件!你好 nanos world!”
-- 向发送此事件的玩家发送“回答”
Events.CallRemote("MyClientEvent", player, Reliability.Reliable, "你好 nanos world!这条消息只给你!")
end)
-- 向所有客户端包中的所有玩家发送远程事件
Events.BroadcastRemote("MyClientEvent", Reliability.Reliable, "你好 nanos world!")
通过事件传递实体
Server/Index.lua
-- 注册本地事件
Events.Subscribe("MyEvent", function(my_text, my_vector, my_character, my_number)
Console.Log("Event received! " .. my_text .. " " .. my_vector.X .. " " .. my_character:GetViewMode() .. " " .. my_number)
-- 输出 "Event received! hello nanos world! 123 1 456"
end)
-- 通过事件传递 Character
local my_temp_character = Character(Vector(0, 0, 100), Rotator(), "nanos-world::SK_Male")
-- 在所有服务器包中调用本地事件
Events.Call("MyEvent", "hello nanos world!", Vector(123, 123, 123), my_temp_character, 456)
-- 在所有 Player 的所有客户端包中调用远程事件
Events.BroadcastRemote("MyEvent", Reliability.Reliable, "hello nanos world!", Vector(123, 123, 123), my_temp_character, 456)
Client/Index.lua
-- 注册远程事件,Character 在客户端以相同的实体到达
Events.SubscribeRemote("MyEvent", function(my_text, my_vector, my_character, my_number)
Console.Log("Remote event received! %s %s", my_text, tostring(my_character))
end)
备注
Events.Subscribe 仅接收本地事件(Events.Call),而 Events.SubscribeRemote 仅接收远程事件。这是自 1.22 版本以来的行为(参见兼容性版本)。
提示
你可以在事件指南页面找到更多示例和详尽的指南。