测试

BattleScene (Node2D) # 根节点,也可以是Control

├── 📊 BattleLogic (Node) # 【核心大脑】不参与显示,只处理数据和规则
│ └── (脚本: BattleLogic.gd) # 持有Battler对象、状态机、计算伤害

├── 🎬 Battlefield (Node2D) # 【战场视觉容器】
│ │
│ ├── Background (TextureRect) # 战斗背景(使用方法一或二)
│ │
│ ├── Battlers (Node2D) # 参战者视觉容器
│ │ ├── PlayerBattler (AnimatedSprite2D)
│ │ │ ├── StatusIcon (Sprite2D) # 显示中毒、烧伤等状态的小图标
│ │ │ └── HealthBar (TextureProgressBar) # 可选:场景内血条
│ │ │
│ │ └── EnemyBattler (AnimatedSprite2D)
│ │ ├── StatusIcon (Sprite2D)
│ │ └── HealthBar (TextureProgressBar) # 可选:场景内血条
│ │
│ └── VFX (Node2D) # 【视觉特效容器】- 非常重要!
│ ├── HitEffects (Node2D) # 受击特效(对象池管理)
│ ├── MoveEffects (Node2D) # 技能特效(对象池管理)
│ └── Projectiles (Node2D) # 飞行道具(对象池管理)

├── 💬 BattleUI (CanvasLayer) # 【用户界面层】永远显示在最前
│ │
│ ├── UIBackground (ColorRect) # UI背景板(可选,用于对话框后)
│ │
│ ├── DialogBox (PanelContainer) # 战斗对话框
│ │ └── DialogLabel (Label)
│ │
│ ├── CommandMenu (PanelContainer) # 指令菜单(战斗/背包/宝可梦/逃跑)
│ │ └── Buttons (VBoxContainer)
│ │
│ ├── MoveMenu (PanelContainer) # 技能选择菜单(平时隐藏)
│ │ └── MoveButtons (GridContainer)
│ │
│ ├── PartyMenu (PanelContainer) # 队伍选择菜单(平时隐藏)
│ │ └── PartySlots (VBoxContainer)
│ │
│ └── HUD (Control) # 平视显示器
│ ├── PlayerHUD (HBoxContainer)
│ │ ├── NameLevel (Label) # “皮卡丘 Lv.25”
│ │ ├── HealthBar (TextureProgressBar) # 主血条
│ │ └── HPText (Label) # “HP: 54/72”
│ │
│ └── EnemyHUD (HBoxContainer)
│ ├── NameLevel (Label) # “大嘴雀 Lv.30”
│ ├── HealthBar (TextureProgressBar) # 主血条
│ └── (通常不显示敌人具体HP数字)

├── 🎥 Camera (Camera2D) # 对战摄像机
│ └── (可能包含抖动脚本)

├── 🔊 Audio (Node) # 【音频管理器】
│ ├── BGM (AudioStreamPlayer) # 背景音乐
│ ├── SFX (AudioStreamPlayer) # 环境音效
│ └── Voice (AudioStreamPlayer) # 叫声音效(可选)

└── 🎞️ Animation (AnimationPlayer) # 【全局动画控制器】

# 负责播放不隶属于特定精灵的动画,如屏幕闪烁、菜单弹出