Skip to content

EventService

EventService 事件系统服务,提供事件的注册、注销与触发能力,用于编辑器插件之间的消息通信和编辑器事件监听。

Overview

事件系统服务,为编辑器插件之间的消息通信提供轻量级的事件总线能力。支持按事件名称注册、注销回调,并可通过触发接口向所有监听者广播数据,同时提供监听数量与存在性的查询接口,便于在代码中管理事件的生命周期。

Get by:

lua
-- @runtime client
local service = editor:GetService("EventService")

Public

On

在 EventService 中为指定事件注册回调。第一个参数 eventName 指明要监听的事件名称,第二个参数 callback 是事件触发时需要执行的处理函数。调用后返回 Number 类型的注册 ID,该 ID 可用于取消本次注册。

参数

参数类型说明
eventNameString事件名称
callbackFunction事件回调函数

返回值

类型说明
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
end

Once

为指定事件注册一个一次性监听回调,当事件触发时执行一次后自动移除。

参数

参数类型说明
eventNameString事件名称
callbackFunction事件回调函数(触发一次后自动注销)

返回值

类型说明
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
end

Off

根据监听注册 ID 取消指定事件上的一个回调,使其不再被后续触发。

参数

参数类型说明
eventNameString事件名称
listenerIdNumber注册时返回的监听 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

取消指定事件上注册的全部回调监听。

参数

参数类型说明
eventNameString事件名称

调用 OffAll

lua
-- @runtime client
local eventService = editor:GetService("EventService")
local eventName = "default"  -- String
eventService:OffAll(eventName)
print("调用完成", eventService)

Fire

触发名为 eventName 的事件,并将可选的 args 参数传递给该事件上注册的回调函数。

参数

参数类型说明
eventNameString事件名称
argsAny传递给回调的可变参数

调用 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。

参数

参数类型说明
eventNameString事件名称

返回值

类型说明
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")
end

GetListenerCount

查询事件服务中指定名称事件当前的监听者数量。

参数

参数类型说明
eventNameString事件名称

返回值

类型说明
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