local Emitter = { EventHandlers = {} } -- 注册事件监听 function Emitter.OnEvent(eventName, handler) if not eventName or type(handler) ~= "function" then print("[EventSystem] Invalid event registration") return end if not Emitter.EventHandlers[eventName] then Emitter.EventHandlers[eventName] = {} end table.insert(Emitter.EventHandlers[eventName], handler) return handler -- 返回handler用于注销 end -- 触发事件 function Emitter.EmitEvent(eventName, ...) local handlers = Emitter.EventHandlers[eventName] if not handlers then return end print("[EventSystem] Emitting event: " .. eventName) for i = #handlers, 1, -1 do -- 倒序遍历允许在回调中移除事件 local success, err = pcall(handlers[i], ...) if not success then print("[EventSystem] Error in handler: " .. tostring(err)) end end end -- 注销事件 function Emitter.OffEvent(eventName, handler) local handlers = Emitter.EventHandlers[eventName] if not handlers then return end for i = #handlers, 1, -1 do if handlers[i] == handler then table.remove(handlers, i) end end if #handlers == 0 then Emitter.EventHandlers[eventName] = nil end end return Emitter