fix(game): 修复技能伤害应用时的空指针异常并调整英雄攻速
- 在 SkillView.apply_damage 中添加实体存在性安全检查,防止目标实体已销毁时访问属性 - 使用可选链操作符安全获取施法者和目标名称,避免日志记录时崩溃 - 将所有英雄的基础攻击速度(as)统一调整为 1,以平衡游戏性
This commit is contained in:
@@ -153,6 +153,8 @@ export class SkillView extends CCComp {
|
||||
//伤害应用
|
||||
apply_damage(target:HeroViewComp,is_range:boolean=false){
|
||||
if(target == null) return;
|
||||
// 安全检查:如果目标实体已不存在,直接返回
|
||||
if (!target.ent) return;
|
||||
if (!this.SConf) return;
|
||||
|
||||
// 对于非持续碰撞类型的技能,在造成伤害后立即关闭碰撞检测
|
||||
@@ -161,7 +163,12 @@ export class SkillView extends CCComp {
|
||||
this.collider.enabled = false;
|
||||
mLogger.log(this.debugMode, 'SkillView', `[SkillView] [${this.SConf.name}] 伤害后关闭碰撞检测`);
|
||||
}
|
||||
mLogger.log(this.debugMode, 'SkillView', `[skillView] 伤害 [${this.group}][${this.sData.caster.ent.get(HeroAttrsComp).hero_name}][${this.sData.caster.ent.eid}]的 [${this.SConf.name}]对 [${target.box_group}][ ${target.ent.get(HeroAttrsComp).hero_name}][${target.ent.eid}]`);
|
||||
|
||||
// 安全获取名称,防止实体销毁导致的空指针异常
|
||||
const casterName = this.sData.caster?.ent?.get(HeroAttrsComp)?.hero_name ?? "未知施法者";
|
||||
const targetName = target.ent.get(HeroAttrsComp)?.hero_name ?? "未知目标";
|
||||
|
||||
mLogger.log(this.debugMode, 'SkillView', `[skillView] 伤害 [${this.group}][${casterName}][${this.sData.casterEid}]的 [${this.SConf.name}]对 [${target.box_group}][ ${targetName}][${target.ent.eid}]`);
|
||||
// if(this.sData.hit_count > this.SConf.hit_num) return 不能超出 最大伤害数量
|
||||
// 使用伤害队列系统处理伤害
|
||||
DamageQueueHelper.addDamageToEntity(
|
||||
|
||||
Reference in New Issue
Block a user