/** * 测试敌人血量显示修复效果 * 用于验证僵尸短时间被多个植物击中后血量显示是否正常 */ const { find } = require('cc'); // 测试函数:模拟多次快速伤害 function testMultipleDamage() { console.log('=== 开始测试敌人血量显示修复 ==='); // 查找敌人控制器 const enemyControllerNode = find('Canvas/GameLevelUI/EnemyController'); if (!enemyControllerNode) { console.error('未找到EnemyController节点'); return; } const enemyController = enemyControllerNode.getComponent('EnemyController'); if (!enemyController) { console.error('未找到EnemyController组件'); return; } // 获取当前活跃的敌人 const activeEnemies = enemyController.getActiveEnemies(); if (activeEnemies.length === 0) { console.log('当前没有活跃的敌人,请先生成敌人'); return; } const testEnemy = activeEnemies[0]; const enemyInstance = testEnemy.getComponent('EnemyInstance'); if (!enemyInstance) { console.error('敌人节点没有EnemyInstance组件'); return; } console.log(`测试目标: ${enemyInstance.getEnemyName()}`); console.log(`初始血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`); // 模拟短时间内多次受伤 const damages = [5, 3, 7, 2, 4]; // 不同的伤害值 let delay = 0; damages.forEach((damage, index) => { setTimeout(() => { if (enemyInstance && enemyInstance.node && enemyInstance.node.isValid) { console.log(`第${index + 1}次伤害: ${damage}`); enemyInstance.takeDamage(damage, Math.random() > 0.8); // 20%暴击率 console.log(`当前血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`); } }, delay); delay += 100; // 每次间隔100毫秒 }); // 5秒后检查最终状态 setTimeout(() => { if (enemyInstance && enemyInstance.node && enemyInstance.node.isValid) { console.log('=== 测试完成 ==='); console.log(`最终血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`); console.log('如果血量显示正常且动画流畅,说明修复成功'); } else { console.log('敌人已被消灭'); } }, 5000); } // 导出测试函数 if (typeof module !== 'undefined' && module.exports) { module.exports = { testMultipleDamage }; } // 如果在浏览器环境中直接运行 if (typeof window !== 'undefined') { window.testEnemyHealthFix = testMultipleDamage; console.log('测试函数已挂载到 window.testEnemyHealthFix()'); } console.log('敌人血量显示修复测试脚本已加载'); console.log('使用方法: 在游戏中生成敌人后,调用 testMultipleDamage() 函数进行测试');