Open xiaoqiangCai opened 2 months ago
补充一下,eventconfig里面类似的都会有巨大的性能问题。 比如
---@field event fun(self: self, event: "单位-属性变化", unit: Unit, attr: string, callback: fun(trg: Trigger, data: EventParam.单位-属性变化)): Trigger
---@field event fun(self: Player, event: "界面-消息", event_name: string, callback: fun(trg: Trigger, data: EventParam.界面-消息)): Trigger
全局事件的分发开销是O(n),我觉得n一般不会特别大,所以没有做专门的优化。如果你确实有成百上千个区域,可以改用 Area:event
方式注册事件,这个分发开销是 O(1)
全局事件的分发开销是O(n),我觉得n一般不会特别大,所以没有做专门的优化。如果你确实有成百上千个区域,可以改用
Area:event
方式注册事件,这个分发开销是 O(1)
界面这个呢
RT,区域事件使用与其他事件同样的event和trigger,在trigger的notify和dispatch中会轮训所有的区域,这在大量区域的时候,是不合理的。
需要对区域的进入和离开,对应的notify和dispatch做区别对待,比如继承一个area的Event