
!LibGetFrame-1.0 V201
底层库,让不同框架插件之间能互相找到对方的 frame(Cell 和 WeakAuras 都依赖它)
查看大图LibGetFrame-1.0 V201
这个库是干嘛的:帮 WeakAuras 等插件快速找到某个玩家对应的头像框架。团队框架可能是 Cell、ElvUI、Grid2 任何一家,这个库屏蔽差异,统一返回正确的 frame。
V100 苍穹之霜优化版,引入全局遍历和分片扫描,解决原版暴力递归的卡顿问题 V200 意难平重构版,引入反向索引和 EnumerateFrames,查询从 O(n) 降到 O(1) V201 快跑兄弟修复版,修复 V200 的 Bug,进一步减少扫描和查询开销
V201 升级了什么:
- 查询从遍历改成哈希定位 —— 原来每次查都要把所有框架挨个比一遍(25 人团几十个框架,WA 每帧查几十上百次),现在单位名直接映射到框架,一次命中,复杂度从 O(n) 降到 O(1)
- 只扫真框架 —— 原来遍历整个
_G全局表(十万条),现在用EnumerateFrames只遍历框架对象(几千条),扫描量减少 70%+ - 永久缓存不变属性 —— 框架名、是否被保护、是否按钮类型这些不会变的属性,查一次存起来,后续扫描直接跳过
- 查询结果缓存 + 零内存分配 —— 相同查询直接返回上次结果,忽略列表复用预分配表,不再每次新建,减少垃圾回收卡顿
- 自适应扫描预算 —— 帧率高多扫、帧率低少扫,避免扫描抢占帧时间导致掉帧
- 修了V200的 3 个 Bug:首次扫描续扫失效、Cell 接口出错丢框架、Cell 篡改全局优先级表
对玩家的实际感受:大团本和战场掉帧减少,战斗间歇卡顿减少,WA 加载后立即可用,用 Cell 的不受影响。
验证版本:游戏内输入 /run print(select(2, LibStub("LibGetFrame-1.0", true))) 返回 201 即可。
直接下载即用,完全不用改 WA 和 MRT。它们内部已经通过 LibStub:GetLibrary("LibGetFrame-1.0") 来取这个库,只要库装在 AddOns 下且被加载,WA 和 MRT 自动用上优化过的版本,原版(如果 WA 自带了老版本)会被 LibStub 的版本比对机制忽略——谁的 MINOR_VERSION 大用谁。
正在加载版本记录…
- 正在加载更新日志…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。