主场景负责把前面几块串成一轮游戏,它自己不画东西,只当协调者。
Main 里通常放:Player 实例、MobTimer、ScoreTimer、StartTimer、生成位置节点、HUD 实例,再加分数变量。三个 Timer 各管一件事,混成一个定时器用状态位判断,后面加暂停和重开会很难收拾。
计分有两种口径,别混用:按存活时间加分就只让 ScoreTimer 累加;按击杀或躲过数量加分就在 Mob 出屏时加。这个项目官方做法是按时间,简单也够用。分数变量放 Main,HUD 只负责显示,不自己存一份——两处各存一份必然会对不上。
HUD 用 CanvasLayer 作根,理由是它不受相机和世界坐标影响,永远贴在屏幕上。分数变化、游戏开始、游戏结束都通过信号从 Main 推给 HUD,HUD 上按钮按下再发一个信号回 Main。方向清楚:状态在 Main,显示和输入在 HUD。
信号连接建议用编辑器里连一次,或在代码里于 _ready 中连,别两头都连。重复连接的表现是「按一次开始,游戏起了两遍」,查起来挺费时间。
到这儿把前面几步合起来跑:开始界面、点按钮、玩家能动、敌人会刷、分数在涨。先不接死亡逻辑,确认这一圈是通的。
