## 营地顶栏小 HUD 栏(裁决 10——钥石余额常驻,最小集形态):承载 UiKit.keystone_badge(工厂单点)。 ## 读数只经 camp_data() 投影单口(禁第二账本、禁视图自算);刷新挂卡④ CampRefreshBus 单口 ## (bus 目标册成员——显式触发才变,禁 _ready 自刷/自持第二入口,契约 5);载体=PRESET_TOP_WIDE 48px 浮层。 class_name CampHudBand extends Control var _badge: PanelContainer func _init() -> void: set_anchors_preset(Control.PRESET_TOP_WIDE) custom_minimum_size = Vector2(0, 48) # 高 48px 浮层覆盖、不挤压画面(camp.md §顶栏) mouse_filter = Control.MOUSE_FILTER_IGNORE # HUD 栏不挡场景命中区(浮层覆盖语义) _badge = UiKit.keystone_badge("钥石 0") _badge.set_anchors_preset(Control.PRESET_CENTER_RIGHT) _badge.position = Vector2(-160, 8) # 顶栏右位次(UiKit 现行件域内——代拍板 3) add_child(_badge) ## 余额写入(格式串=既有消费面同款「钥石 %d」——badge 工厂约定单点,禁第二格式串) func set_balance(v: int) -> void: _badge.value_label.text = "钥石 %d" % v ## 刷新单口落点(CampRefreshBus 目标册成员——显式触发才变,契约 5 刷新时机①②③同一闸) func refresh_camp(camp_data: Dictionary) -> void: set_balance(int(camp_data.get("balance", 0)))