事件指南
关于事件你需要了解的一切。
类事件
在 nanos world 中,玩家或实体执行的所有操作都可以通过事件来获取。
最基本的事件例子是 Spawn(生成)。 每当实体生成时,都会触发 Spawn 事件。
订阅类事件
使用 :Subscribe() 方法注册事件非常简单直接。例如,我们想在有玩家加入服务器时获得通知:
Player.Subscribe("Spawn", function(player)
Console.Log(player:GetName() .. " has joined!")
end)
信息
大多数事件都会在客户端和服务器端同时触发,只有少数极个别的例外情况,这些例外会受到可用性的限制。
退订类事件
目前有两种退订事件的方法:
信息
注意: 退订事件将始终只会注销在您当前 Package 中注册的事件。
退订所有事件
-- 这将注销在此 Package 中注册的所有 Player 的 "Spawn" 事件
Player.Unsubscribe("Spawn")
退订特定的事件回调
-- 提前声明回调函数
function OnSpawnPlayer(player)
Console.Log(player:GetName() .. " has joined!")
end
-- 订阅事件并传入回调
Player.Subscribe("Spawn", OnSpawnPlayer)
-- 再次订阅同一个事件
Player.Subscribe("Spawn", function(player)
Console.Log(player:GetName() .. " has joined again!")
end)
-- 仅退订第一个回调
Player.Unsubscribe("Spawn", OnSpawnPlayer)
-- 这将继续触发 "player has joined again",但不再触发
-- "player has joined"
实体事件
在 nanos world 中,您也可以为特定实体注册事件。这样一来,只有当该特定实体成为事件触发原因时,才会触发回调。
订阅实体事件
-- 生成一个 Character
local my_character = Character()
my_character:Subscribe("EnterVehicle", function(self, vehicle)
-- my_character 进入了载具
end)
提示
请注意,一旦实体被销毁,为该实体注册的所有事件都会自动注销!
退订实体事件
目前有两种退订事件的方法:
信息
注意: 退订事件将始终只会注销在您当前 Package 中注册的事件。
退订所有实体事件
-- 这将注销在此 Package 中注册的该特定 Character 的所有 "EnterVehicle" 事件
my_character:Unsubscribe("EnterVehicle")
退订特定实体事件回调
-- 提前声明回调函数
function OnCharacterEnteredVehicle(character, vehicle)
-- 进入了载具!
end
-- 订阅事件并传入回调
my_character:Subscribe("EnterVehicle", OnCharacterEnteredVehicle)
-- 再次订阅同一个事件
my_character:Subscribe("EnterVehicle", function(character, vehicle)
-- 再次进入了载具!
end)
-- 仅退订第一个回调
my_character:Unsubscribe("EnterVehicle", OnCharacterEnteredVehicle)
自定义事件
在 nanos world 中,可以定义和调用自定义事件。 技术文档请参考 Events 静态类。
自定义事件是由用户创建的事件,您可以向所有其他 Package 订阅或调用这些事件。