From fcd34b52bc394389261ca94f1a847ededbe0bc75 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 1 Oct 2026 07:09:10 +0800 Subject: [PATCH] =?UTF-8?q?draw=20calls=20=E4=BC=98=E5=8C=96=E6=89=B9:?= =?UTF-8?q?=E7=93=A6=E7=89=87=E6=80=81=E9=9D=9E=E8=8B=B1=E9=9B=84=E6=A0=BC?= =?UTF-8?q?=E9=9A=90=E5=BD=A2=20StyleBoxFlat=20=E7=BD=AE=20null=E2=80=94?= =?UTF-8?q?=E2=80=94=E6=BB=A1=E8=B4=9F=E8=8D=B7=E5=B8=A7=20504=E2=86=92196?= =?UTF-8?q?=20DC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 定位(临时 A/B 探针逐档实测,窗口化满负荷帧,探针已删方法存档于本信息): - 基线 census:100 格已开 92/glyph 23/叠层约 20/tex 变体 12 - 统一全格 tex_base 为单纹理:504→504(零增益——纹理切换非批断裂主因) - 去 glyph/badge:-23(每字格 1 DC) - 去矢量叠层(outline/facade/proj/eflag/contact):-23 - 去隐形 bg_sb:-402(100 格×~4 个不可合批 StyleBoxFlat polygon 命令,逐格打断棋盘批) - 隐整个 board_zone 参照系:37 DC(HUD 外围) - sb 清除后 100 格 tex quad 合回 ~1 批(隐格仅省 1 DC)——批可跨 item 合并,唯一杀手=sb 多边形 改动(game/presentation/views/board_view.gd _paint_cell 单点): - 瓦片态非英雄格不再挂透明载体 sb(透明底+零描边=视觉贡献零),u.bg_sb=null - 英雄格保留蓝框载体 sb(新透明 sb+3px 边框,绘制序不变);平色回退路径零改动 - 核心层/data/smoke 策略参数零触碰 读数与闸门: - battle_draw_calls 504→196(目标 ≤200 达标;三跑 196/196/196 稳定) - 视觉零变化:三关棋盘 PNG(board_shot_probe)+四屏截图(shot_probe)改前后 7/7 逐像素零差异(PIL diff bbox=None,容差 0) - 冒烟 596/0;四探针 ui_input/ui_probe/ui_click/ui_layout 退出码全 0 - 附:补交 shot_probe.gd.uid(Godot 4.7 uid 元数据,库内 .uid 全跟踪惯例) --- game/presentation/views/board_view.gd | 10 +++++++--- game/smoke/shot_probe.gd.uid | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 game/smoke/shot_probe.gd.uid diff --git a/game/presentation/views/board_view.gd b/game/presentation/views/board_view.gd index d117cea6..e97e7f7c 100644 --- a/game/presentation/views/board_view.gd +++ b/game/presentation/views/board_view.gd @@ -708,16 +708,20 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void: # 瓦片模式(高墙接线批 2026-09-26):tex_base = 查表瓦片(未开=墙瓦片/已开=地面瓦片), # bg_sb 降级为透明描边载体——只承载呼吸微光/主角蓝框(CellUnit 瓦片态画在瓦片之上), # 程序化平色退役;瓦片分配=格坐标哈希,初始化落定后逐拍稳定(禁逐轮重掷——圣经原则三) - var sb: StyleBoxFlat + # draw calls 批优化(2026-10-01):透明载体 sb 视觉贡献=零(透明底+零描边——不可见),但 + # StyleBoxFlat 多边形命令不可合批,每格打断棋盘批——实测 100 格满负荷帧 ~402 DC(A/B 探针 + # 阶梯:纹理统一 0 增益/去 glyph −23/去叠层 −23/去隐形 sb −402)。非英雄格 sb 直接置 null + #(绘制路径零像素变化),仅英雄格保留蓝框载体。 + var sb: StyleBoxFlat = null var tile: Texture2D = null if _tiles_ok: - # Color.TRANSPARENT 载体(引擎常量——视图禁内联色字面量纪律;透明+零描边=瓦片上不画任何东西) - sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0) tile = _floor_tile_for(c) if revealed else _wall_tile_for(c) else: # 素材整批缺位回退 = 现行程序化平色路径(fresh checkout 冒烟不炸——任务书 §2.2) sb = UiKit.panel_flat(bg, bg.darkened(0.15), 3) if is_hero: + if sb == null: + sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0) sb.set_border_width_all(3) sb.border_color = COL_HERO if glyph == "" and _hero_tex_idle == null: diff --git a/game/smoke/shot_probe.gd.uid b/game/smoke/shot_probe.gd.uid new file mode 100644 index 00000000..851c3112 --- /dev/null +++ b/game/smoke/shot_probe.gd.uid @@ -0,0 +1 @@ +uid://dv81k73ruw7xe