主题
EventService
EventService 事件系统服务,提供事件的注册、注销与触发能力,用于编辑器插件之间的消息通信和编辑器事件监听。
Overview
事件系统服务,为编辑器插件之间的消息通信提供轻量级的事件总线能力。支持按事件名称注册、注销回调,并可通过触发接口向所有监听者广播数据,同时提供监听数量与存在性的查询接口,便于在代码中管理事件的生命周期。
Get by:
lua
-- @runtime client
local service = editor:GetService("EventService")Public
On
在 EventService 中为指定事件注册回调。第一个参数 eventName 指明要监听的事件名称,第二个参数 callback 是事件触发时需要执行的处理函数。调用后返回 Number 类型的注册 ID,该 ID 可用于取消本次注册。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
callback | Function | 事件回调函数 |
返回值
| 类型 | 说明 |
|---|---|
Number | 注册ID(用于取消注册) |
调用 On
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local callback = function() end -- Function
local result = eventService:On(eventName, callback) -- 返回 Number
if result ~= nil then
print(result)
if result ~= 0 then
print("结果非零")
end
endOnce
为指定事件注册一个一次性监听回调,当事件触发时执行一次后自动移除。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
callback | Function | 事件回调函数(触发一次后自动注销) |
返回值
| 类型 | 说明 |
|---|---|
Number | 注册ID |
调用 Once
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local callback = function() end -- Function
local result = eventService:Once(eventName, callback) -- 返回 Number
if result ~= nil then
print(result)
if result ~= 0 then
print("结果非零")
end
endOff
根据监听注册 ID 取消指定事件上的一个回调,使其不再被后续触发。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
listenerId | Number | 注册时返回的监听 ID |
调用 Off
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local listenerId = 1 -- Number
eventService:Off(eventName, listenerId)
print("调用完成", eventService)OffAll
取消指定事件上注册的全部回调监听。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
调用 OffAll
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
eventService:OffAll(eventName)
print("调用完成", eventService)Fire
触发名为 eventName 的事件,并将可选的 args 参数传递给该事件上注册的回调函数。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
args | Any | 传递给回调的可变参数 |
调用 Fire
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local args = nil -- Any
eventService:Fire(eventName, args)
print("调用完成", eventService)HasListeners
检查当前事件服务中是否存在使用指定事件名注册的监听者。传入的事件名对应一个已被监听的事件时返回 true,否则返回 false。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
返回值
| 类型 | 说明 |
|---|---|
Bool | 是否存在监听 |
调用 HasListeners
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local result = eventService:HasListeners(eventName) -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
endGetListenerCount
查询事件服务中指定名称事件当前的监听者数量。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | String | 事件名称 |
返回值
| 类型 | 说明 |
|---|---|
Int | 当前监听数量 |
调用 GetListenerCount
lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default" -- String
local result = eventService:GetListenerCount(eventName) -- 返回 Int
if result ~= nil then
print(result)
if result ~= 0 then
print("结果非零")
end
end