耳内有灰:
已修复的问题:VirtualList 无法滚动 — 根本原因是 Modal 的内容容器使用 YGUndefined 高度,导致 flexGrow=1 的列表容器实际高度为 0,VirtualList 的 ScrollView 无法获得滚动空间。修复方式是将 listContainer 和 VirtualList 都改为明确的固定高度 460px,并设置 viewportHeight = 460。排序切换功能 — 在留言列表头部添加了排序切换按钮,支持两种排序模式:按热度排序:优先按点赞数降序,其次按评论数降序按时间排序:优先按发布时间降序点击按钮即可在两种模式间切换,切换后自动重新排序并刷新列表。
【BUG经验】屋檐蓝图跟随鼠标移动
好几轮,都没搞定蓝图跟随鼠标移动,还好找到了老的项目的成功案例,喂给了嗒啦啦 嗒: 核心在以下几处: 1. 点击菜单项进入栽树模式 — BuildMenu.lua:714-727 lua 复制 elseif btn.action == "tree_item" then S.tm.selectedType = btn.treeType S.tm.active = true S.tm.justE

:
实现内容总结:测量牌匾区域 — 通过 PIL 分析 roof_mid.png(152×217),确定牌匾木板区域为 x=20…132, y=104…142,转换为比例常量添加比例常量(约 1786 行):PLAQUE_LEFT_RATIO = 0.1316,PLAQUE_RIGHT_RATIO = 0.8684PLAQUE_TOP_RATIO = 0.4793,PLAQUE_BOTTOM_RATIO = 0.6544牌匾隐形框+悬停检测(_RenderRoof 步骤 7c):根据中段位置 (roofLeft + capW, roofTop) 和中段尺寸 (midW, roofH) 乘以比例,计算牌匾矩形将鼠标屏幕坐标通过 ScreenToContent → 逆旋转 → 逆缩放,转换到 counter-rotation local 空间鼠标在牌匾矩形内时,绘制 2px 红色描边边框请预览测试 — 鼠标移到屋檐中段的牌匾区域上时应该出现红色边框。
:
对话框和列表都正常了。但有两个问题:导入了 0 个像素 — 日志显示 (128.0x128.0 -> 32x32) 但 导入完成: 0 个像素KTX 格式错误 — Unsupported texture format in KTX file,说明 cache:GetResource("Image", ...) 加载了 GPU 压缩格式,GetPixel 无法正确读取需要改用 Image() 直接加载文件来读取原始像素数据。Image 有 IsCompressed() 方法。问题是 cache:GetResource("Image", ...) 可能自动加载了 KTX 压缩格式。需要用 Image:new() 创建并手动从文件加载,绕过缓存的压缩格式。我可以用 cache:GetFile() 获取文件,然后用 Image:new() 创建 Image 对象并从文件 load。Bot Avatar现在修改 CharData:ImportFromImage,改用 Image:new() + cache:GetFile() 加载原始 PNG 数据。构建成功。修复方案:改用 cache:GetFile() + Image:new() + image:Load(file) 加载原始 PNG 数据绕过 cache:GetResource("Image") 可能返回的 KTX GPU 压缩格式加了 IsCompressed() 检查作为额外保险可以预览测试——再次点击「导入」选择一张图片,应该能看到像素被正确导入到画布上了。













