|
|
@@ -54,13 +54,12 @@ export class EnemyController extends BaseSingleton {
|
|
|
private defaultHealth: number = 30;
|
|
|
|
|
|
// 墙体属性
|
|
|
- @property({
|
|
|
- tooltip: '墙体初始血量'
|
|
|
- })
|
|
|
- public wallHealth: number = 1200;
|
|
|
+ // 最终数值将在 init() 中从存档或 GameManager 注入
|
|
|
+ public wallHealth: number = 0;
|
|
|
|
|
|
- // 墙体血量显示节点(运行时动态查找)
|
|
|
- private wallHealthNode: Node = null;
|
|
|
+ // 墙体血量显示节点(Inspector 拖拽 HeartLabel 节点到此)
|
|
|
+ @property({ type: Node, tooltip: '墙体血量 Label 节点 (HeartLabel)' })
|
|
|
+ public wallHealthNode: Node = null;
|
|
|
|
|
|
// 游戏区域边界 - 改为public,让敌人实例可以访问
|
|
|
public gameBounds = {
|
|
|
@@ -197,26 +196,23 @@ export class EnemyController extends BaseSingleton {
|
|
|
|
|
|
// 初始化墙体血量显示
|
|
|
initWallHealthDisplay() {
|
|
|
- if (!this.wallHealthNode) {
|
|
|
- // 尝试查找墙体血量显示节点
|
|
|
- this.wallHealthNode = find('Canvas/GameLevelUI/HeartNode');
|
|
|
- }
|
|
|
-
|
|
|
if (this.wallHealthNode) {
|
|
|
- // 更新墙体血量显示
|
|
|
this.updateWallHealthDisplay();
|
|
|
} else {
|
|
|
- console.warn('未设置墙体血量显示节点');
|
|
|
+ console.warn('EnemyController 未绑定 HeartLabel 节点,请在 Inspector 中拖拽 Canvas/GameLevelUI/HeartNode/HeartLabel');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 更新墙体血量显示
|
|
|
public updateWallHealthDisplay() {
|
|
|
- if (!this.wallHealthNode) {
|
|
|
- return;
|
|
|
+ if (!this.wallHealthNode) return;
|
|
|
+
|
|
|
+ // 直接在当前节点或其子节点寻找 Label
|
|
|
+ let heartLabel = this.wallHealthNode.getComponent(Label);
|
|
|
+ if (!heartLabel) {
|
|
|
+ heartLabel = this.wallHealthNode.getComponentInChildren(Label);
|
|
|
}
|
|
|
|
|
|
- const heartLabel = this.wallHealthNode.getComponent(Label);
|
|
|
if (heartLabel) {
|
|
|
heartLabel.string = this.wallHealth.toString();
|
|
|
}
|