feat(attr): 游戏设计器新增「属性」页,字段化编辑 attributes.json

按 CLAUDE.md 编辑器插件规范:控件经 designer_ui 工厂创建、标签中英双语中文在前、
combine 下拉存 key 不存显示串、_save 合并式写回防丢键、UI 在 _ready 而非 _init 构建。

另修:SpinBox 按 step 吸附会引入双精度噪声(0.01 → 0.00999999999476),
直接写回会把噪声固化进 JSON;_collect 用 snappedf(v, 1e-6) 抹平,
使「不改任何值就保存」得到逐位一致的 attributes.json。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 12:05:50 +08:00
co-authored by Claude Opus 5
parent a6c6fdbf1e
commit a0e205a031
3 changed files with 72 additions and 0 deletions
+1
View File
@@ -17,6 +17,7 @@ func _init() -> void:
_add_tab(tabs, "🔥 状态", preload("res://addons/game_designer/status_tab.gd").new())
_add_tab(tabs, "👑 Boss", preload("res://addons/game_designer/boss_tab.gd").new())
_add_tab(tabs, "⚖ 平衡", preload("res://addons/game_designer/balance_tab.gd").new())
_add_tab(tabs, "📊 属性", preload("res://addons/game_designer/attribute_tab.gd").new())
func _add_tab(tabs: TabContainer, title: String, content: Control) -> void:
var scroll := ScrollContainer.new()