地图编辑器白屏问题
昨天 13:34综合
白屏问题
pendingRefresh_ 从 RenderMap 内部触发 Refresh 改为由 HandleMapEditorUpdate(Update 事件)触发,彻底解耦 NanoVG 渲染帧和 UI 重建
scissor 加 clipW > 10 and clipH > 10 安全守卫,Layout 未计算完时不裁剪
滚轮穿透
HandleMapEditorMouseWheel 先检查 input.mousePosition.x 是否在 editorCanvas 左边界右侧,鼠标在侧边栏时直接 return,不触发缩放
侧边栏优化
素材格子和地图列表两处 ScrollView 均加 showScrollbar = false, bounces = false
修改内容:
移除了 nvgScissor:这是白屏的根本原因。GetAbsoluteLayout() 在某些布局时机返回的坐标与 NanoVG 帧坐标空间不匹配,导致裁剪区域覆盖了整个渲染内容
保留了画布背景填充:editorCanvas 区域的深色底色 nvgRGBA(50, 55, 65) 仍保留,但加了 cl.width > 10 防御检查
移除了 nvgResetScissor:scissor 不再使用,这个调用也没必要了
ghost 问题已经通过之前的 pendingRefresh_ + Update事件 方案解决,不需要依赖 scissor。地图现在应该恢复正常渲染。
问题根因:GetAbsoluteLayout() 返回的对象只有 x/y 字段,没有 width/height,导致 cl.width > 10 报错 attempt to compare number with nil(引擎错误信息将 nil 放右边)。
修复方案:直接移除画布背景填充逻辑。这段代码本来是装饰性的深色底,但 RenderMap 里本身已有地图区域的深色背景 nvgRGBA(30, 35, 42) 覆盖整个格子区域,视觉上没有影响。地图现在应该能正常渲染。




