refactor(hero desc): 调整技能描述渲染逻辑,适配不同场景显示需求

1. 新增showName参数控制技能名称是否展示,区分英雄弹窗和卡池场景
2. 修正英雄预制体中角色的Y轴偏移量
3. 同步更新函数注释和调用传参
This commit is contained in:
pan
2026-08-12 09:39:24 +08:00
parent ae6c69e4f3
commit 1609d3971a
3 changed files with 12 additions and 9 deletions

View File

@@ -4746,7 +4746,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 22.263000000000016,
"y": 14.014,
"z": 0
},
"_lrot": {

View File

@@ -1,4 +1,4 @@
/**
/**
* @file HeroSkillDesc.ts
* @description 英雄技能/能力描述的【唯一文字表达标准层】
*
@@ -555,9 +555,10 @@ export function buildEquipRich(entries: FieldEntry[], showName: boolean = false)
* 技能等级取 LvTriggerEntry.s_lv未标注时按档位序号1/2/3...)兜底。
*
* @param source 英雄运行时数据源(含 lv 与触发技能分组)
* @param showName 是否展示「技能名」片段(英雄信息弹窗 true英雄卡池卡片 false
* @returns 多行富文本串,\n 分隔
*/
export function buildSkillDescMoreRich(source: ISkillDescSource): string {
export function buildSkillDescMoreRich(source: ISkillDescSource, showName: boolean = true): string {
const lv = Math.max(1, source.lv ?? 1);
const lines: string[] = [];
@@ -599,7 +600,7 @@ export function buildSkillDescMoreRich(source: ISkillDescSource): string {
? `${trigName}${valueRich(cur.t_num)}`
: trigName;
// 技能名直接展示,不附加档位数字后缀(由 lv 字段控制生效档,玩家无需关注内部档号)
const curHead = `${skillName}」: ${curTrig}, `;
const curHead = showName ? `${skillName}」: ${curTrig}, ` : `${curTrig}, `;
lines.push(effectRich(buildEffectLine(curHead, mergeSkillParams(base, cur.overrides))));
}
}
@@ -609,7 +610,7 @@ export function buildSkillDescMoreRich(source: ISkillDescSource): string {
if (fieldEntries?.length) {
for (const entry of resolveFieldByLv(fieldEntries, lv)) {
const baseName = getTriggerSkillName(SkillTriggerType.Field, entry.uuid);
const line = buildFieldLine("", entry, true, baseName);
const line = buildFieldLine("", entry, showName, baseName);
if (line) lines.push(effectRich(line));
}
}
@@ -618,7 +619,9 @@ export function buildSkillDescMoreRich(source: ISkillDescSource): string {
const revive = resolveReviveByLv(source[SkillTriggerType.Revive] as LvReviveEntry[] | undefined, lv);
if (revive) {
const reviveName = getTriggerSkillName(SkillTriggerType.Revive, revive.s_uuid);
lines.push(`${skillNameRich(reviveName)}: 每回合拥有${valueRich(revive.r_num)}次重生机会, 死亡后以${valueRich(`${Math.round(revive.upr * 100)}%`)}血量原地重生`);
lines.push(showName
? `${skillNameRich(reviveName)}: 每回合拥有${valueRich(revive.r_num)}次重生机会, 死亡后以${valueRich(`${Math.round(revive.upr * 100)}%`)}血量原地重生`
: `每回合拥有${valueRich(revive.r_num)}次重生机会, 死亡后以${valueRich(`${Math.round(revive.upr * 100)}%`)}血量原地重生`);
}
return lines.join("\n");

View File

@@ -289,7 +289,7 @@ export class CHeroComp extends CCComp {
// 与英雄信息弹窗/升级确认框同一套文案规则,杜绝手写文案与数值漂移
// outlineRich 为整段富文本包裹描边,提升深色面板可读性
if (this.info_rich) {
const desc = hero ? buildSkillDescMoreRich(this.buildHeroDescSource(hero)) : (this.cardData.info || "");
const desc = hero ? buildSkillDescMoreRich(this.buildHeroDescSource(hero), false) : (this.cardData.info || "");
this.info_rich.string = outlineRich(desc);
this.info_rich.node.active = !!desc;
}