fix(heroBox): 修复英雄面板属性显示错位与展开收起高度异常

1.  修正了暴击率/击晕率的文本和节点名称混淆问题
2.  添加属性栏容器节点,实现展开收起时动态调整高度
3.  修复预制体中属性行的绑定关系错乱问题
This commit is contained in:
pan
2026-07-28 16:07:03 +08:00
parent 16cc50cfdf
commit 371178fce3
2 changed files with 76 additions and 62 deletions

View File

@@ -4830,7 +4830,7 @@
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "crt", "_name": "stun",
"_objFlags": 0, "_objFlags": 0,
"__editorExtras__": {}, "__editorExtras__": {},
"_parent": { "_parent": {
@@ -4964,7 +4964,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "23OgUQSWJOq5zQxc6J1hU3" "fileId": "a7bBKKejlHJJdonzsgqf2e"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -4988,7 +4988,7 @@
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_string": "击率:", "_string": "击率:",
"_horizontalAlign": 1, "_horizontalAlign": 1,
"_verticalAlign": 1, "_verticalAlign": 1,
"_actualFontSize": 15, "_actualFontSize": 15,
@@ -5032,7 +5032,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "ebOqqsA9VFtIYd8DIOSGQK" "fileId": "28oScCAg1AdaVKL9nzk69N"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5042,7 +5042,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "84/ESDOKlOIptfoG9+jEsU", "fileId": "91qTH/ditJ37Qw/bZi2AQb",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -5123,7 +5123,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "d149Ex+CFGlog98SAja2LG" "fileId": "92OiU2/sVAXq3ByK0YL/n5"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -5191,7 +5191,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "97lsHbUclAeZk57lP7GxA8" "fileId": "2aawePuyRBy72HsAg3axB0"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5201,7 +5201,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "edCkK8XTJI4I1IWajtvDei", "fileId": "fb5IOgBC9FUJ7gxhgxpf05",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -5282,7 +5282,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "dbFHhUQmROZY5gpSX1TeXb" "fileId": "5a092DU4NApp5gR/JgBvvi"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -5350,7 +5350,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "8eRw0o/MxHHJpJ2tA/8tYq" "fileId": "14XBomUS1OoI9TNcMQmd5p"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5360,7 +5360,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "49nPTFFIhGpJEwyKXU4EmE", "fileId": "04DQ6+ffNNtr7YSS9DPGSi",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -5391,7 +5391,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "20S7/ZZwRNyJJKXWwgJBCD" "fileId": "52J+nl6NhEwISdQOF5m4j+"
}, },
{ {
"__type__": "cc.Layout", "__type__": "cc.Layout",
@@ -5429,7 +5429,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "39C6+AYDlBXrHXTet1pNqB" "fileId": "52OWhUvItF8a/zbawuo9VE"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5439,14 +5439,14 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "3d4GQZURdM5r23jdOMVjD5", "fileId": "eeQCVMj0JGZJiignND/ULN",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "crt-d", "_name": "crt",
"_objFlags": 0, "_objFlags": 0,
"__editorExtras__": {}, "__editorExtras__": {},
"_parent": { "_parent": {
@@ -5527,7 +5527,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -74.6650390625, "x": -73.416259765625,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -5568,7 +5568,7 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 50.669921875, "width": 53.16748046875,
"height": 24.16 "height": 24.16
}, },
"_anchorPoint": { "_anchorPoint": {
@@ -5580,7 +5580,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "6e5f243lFFf5HyeB8yNU4Y" "fileId": "23OgUQSWJOq5zQxc6J1hU3"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -5604,7 +5604,7 @@
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_string": "爆 伤:", "_string": "暴击率:",
"_horizontalAlign": 1, "_horizontalAlign": 1,
"_verticalAlign": 1, "_verticalAlign": 1,
"_actualFontSize": 15, "_actualFontSize": 15,
@@ -5648,7 +5648,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "9cEMtGZ0dLg4ltNa/hkbV2" "fileId": "ebOqqsA9VFtIYd8DIOSGQK"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5658,7 +5658,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "bdHkHm8QNNyIz63Nd5IHuM", "fileId": "84/ESDOKlOIptfoG9+jEsU",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -5686,7 +5686,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -31.319091796875, "x": -28.821533203125,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -5739,7 +5739,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "16XeGbcjxGKZCd5wxqhL7L" "fileId": "d149Ex+CFGlog98SAja2LG"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -5807,7 +5807,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "5a76E1xxdP24y3u2L+z37Q" "fileId": "97lsHbUclAeZk57lP7GxA8"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5817,7 +5817,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "a7YrwGQaVCsapklkIRHfh+", "fileId": "edCkK8XTJI4I1IWajtvDei",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -5845,7 +5845,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -13.30810546875, "x": -10.810546875,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -5898,7 +5898,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "39sdIey3JAUKlFfDH4LXKi" "fileId": "dbFHhUQmROZY5gpSX1TeXb"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -5966,7 +5966,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "060L3HbmlJDJTO3SC/TjLs" "fileId": "8eRw0o/MxHHJpJ2tA/8tYq"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -5976,7 +5976,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "104sbIq11NG7vPH7SZOKi3", "fileId": "49nPTFFIhGpJEwyKXU4EmE",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -6007,7 +6007,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "24oS/ToblMI68ZJ9tLiDnH" "fileId": "20S7/ZZwRNyJJKXWwgJBCD"
}, },
{ {
"__type__": "cc.Layout", "__type__": "cc.Layout",
@@ -6045,7 +6045,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "d4f1mJ/CtO35PHKKIV1h7/" "fileId": "39C6+AYDlBXrHXTet1pNqB"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -6055,14 +6055,14 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "bcbF+3UzZP9JVCuP62yFKE", "fileId": "3d4GQZURdM5r23jdOMVjD5",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
}, },
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "stun", "_name": "crt-d",
"_objFlags": 0, "_objFlags": 0,
"__editorExtras__": {}, "__editorExtras__": {},
"_parent": { "_parent": {
@@ -6143,7 +6143,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -73.416259765625, "x": -74.6650390625,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -6184,7 +6184,7 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 53.16748046875, "width": 50.669921875,
"height": 24.16 "height": 24.16
}, },
"_anchorPoint": { "_anchorPoint": {
@@ -6196,7 +6196,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "a7bBKKejlHJJdonzsgqf2e" "fileId": "6e5f243lFFf5HyeB8yNU4Y"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -6220,7 +6220,7 @@
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_string": "击晕率:", "_string": "爆 伤:",
"_horizontalAlign": 1, "_horizontalAlign": 1,
"_verticalAlign": 1, "_verticalAlign": 1,
"_actualFontSize": 15, "_actualFontSize": 15,
@@ -6264,7 +6264,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "28oScCAg1AdaVKL9nzk69N" "fileId": "9cEMtGZ0dLg4ltNa/hkbV2"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -6274,7 +6274,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "91qTH/ditJ37Qw/bZi2AQb", "fileId": "bdHkHm8QNNyIz63Nd5IHuM",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -6302,7 +6302,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -28.821533203125, "x": -31.319091796875,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -6355,7 +6355,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "92OiU2/sVAXq3ByK0YL/n5" "fileId": "16XeGbcjxGKZCd5wxqhL7L"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -6423,7 +6423,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "2aawePuyRBy72HsAg3axB0" "fileId": "5a76E1xxdP24y3u2L+z37Q"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -6433,7 +6433,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "fb5IOgBC9FUJ7gxhgxpf05", "fileId": "a7YrwGQaVCsapklkIRHfh+",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -6461,7 +6461,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -10.810546875, "x": -13.30810546875,
"y": 0, "y": 0,
"z": 0 "z": 0
}, },
@@ -6514,7 +6514,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "5a092DU4NApp5gR/JgBvvi" "fileId": "39sdIey3JAUKlFfDH4LXKi"
}, },
{ {
"__type__": "cc.Label", "__type__": "cc.Label",
@@ -6582,7 +6582,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "14XBomUS1OoI9TNcMQmd5p" "fileId": "060L3HbmlJDJTO3SC/TjLs"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -6592,7 +6592,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "04DQ6+ffNNtr7YSS9DPGSi", "fileId": "104sbIq11NG7vPH7SZOKi3",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -6623,7 +6623,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "52J+nl6NhEwISdQOF5m4j+" "fileId": "24oS/ToblMI68ZJ9tLiDnH"
}, },
{ {
"__type__": "cc.Layout", "__type__": "cc.Layout",
@@ -6661,7 +6661,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "52OWhUvItF8a/zbawuo9VE" "fileId": "d4f1mJ/CtO35PHKKIV1h7/"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",
@@ -6671,7 +6671,7 @@
"asset": { "asset": {
"__id__": 0 "__id__": 0
}, },
"fileId": "eeQCVMj0JGZJiignND/ULN", "fileId": "bcbF+3UzZP9JVCuP62yFKE",
"instance": null, "instance": null,
"targetOverrides": null, "targetOverrides": null,
"nestedPrefabInstanceRoots": null "nestedPrefabInstanceRoots": null
@@ -10645,10 +10645,10 @@
"__id__": 157 "__id__": 157
}, },
"crt_all_label": { "crt_all_label": {
"__id__": 247 "__id__": 271
}, },
"crt_plus_label": { "crt_plus_label": {
"__id__": 253 "__id__": 277
}, },
"knockback_all_label": { "knockback_all_label": {
"__id__": 343 "__id__": 343
@@ -10663,10 +10663,10 @@
"__id__": 397 "__id__": 397
}, },
"stun_all_label": { "stun_all_label": {
"__id__": 295 "__id__": 247
}, },
"stun_plus_label": { "stun_plus_label": {
"__id__": 301 "__id__": 253
}, },
"speed_all_label": { "speed_all_label": {
"__id__": 223 "__id__": 223
@@ -10678,7 +10678,7 @@
"__id__": 319 "__id__": 319
}, },
"freeze_plus_label": { "freeze_plus_label": {
"__id__": 301 "__id__": 253
}, },
"puncture_all_label": { "puncture_all_label": {
"__id__": 367 "__id__": 367
@@ -10687,17 +10687,18 @@
"__id__": 373 "__id__": 373
}, },
"crit_dmg_all_label": { "crit_dmg_all_label": {
"__id__": 271 "__id__": 295
}, },
"crit_dmg_plus_label": { "crit_dmg_plus_label": {
"__id__": 277 "__id__": 301
},
"attr_box": {
"__id__": 168
}, },
"more_btn": { "more_btn": {
"__id__": 169 "__id__": 169
}, },
"stun_row": { "stun_row": null,
"__id__": 285
},
"freeze_row": { "freeze_row": {
"__id__": 309 "__id__": 309
}, },

View File

@@ -12,7 +12,7 @@
* - HeroInfoheroSet—— 英雄静态配置 * - HeroInfoheroSet—— 英雄静态配置
*/ */
import { mLogger } from "../common/Logger"; import { mLogger } from "../common/Logger";
import { _decorator, Node, Sprite, Label, resources, AnimationClip, SpriteFrame, NodeEventType } from "cc"; import { _decorator, Node, Sprite, Label, resources, AnimationClip, SpriteFrame, NodeEventType, UITransform } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { oops } from "db://oops-framework/core/Oops"; import { oops } from "db://oops-framework/core/Oops";
@@ -112,6 +112,9 @@ export class HeroBoxComp extends CCComp {
// ======================== 更多属性折叠栏 ======================== // ======================== 更多属性折叠栏 ========================
/** 属性栏容器(展开/收起时动态调整高度) */
@property(Node)
private attr_box: Node = null;
/** 更多按钮(点击展开/收起次级属性栏) */ /** 更多按钮(点击展开/收起次级属性栏) */
@property(Node) @property(Node)
private more_btn: Node = null; private more_btn: Node = null;
@@ -133,6 +136,10 @@ export class HeroBoxComp extends CCComp {
/** 次级属性栏是否展开 */ /** 次级属性栏是否展开 */
private moreExpanded: boolean = false; private moreExpanded: boolean = false;
/** 属性栏收起高度 */
private static readonly ATTR_BOX_HEIGHT_COLLAPSED = 125;
/** 属性栏展开高度 */
private static readonly ATTR_BOX_HEIGHT_EXPANDED = 210;
// ======================== 运行时状态 ======================== // ======================== 运行时状态 ========================
@@ -166,7 +173,7 @@ export class HeroBoxComp extends CCComp {
this.setMoreRowsVisible(this.moreExpanded); this.setMoreRowsVisible(this.moreExpanded);
} }
/** 设置 5 个次级属性栏(击晕/冰冻/击退/穿透/风怒)的可见性 */ /** 设置 5 个次级属性栏(击晕/冰冻/击退/穿透/风怒)的可见性,并同步调整属性栏高度 */
private setMoreRowsVisible(visible: boolean) { private setMoreRowsVisible(visible: boolean) {
const rows = [this.stun_row, this.freeze_row, this.knockback_row, this.puncture_row, this.wfuny_row]; const rows = [this.stun_row, this.freeze_row, this.knockback_row, this.puncture_row, this.wfuny_row];
for (const row of rows) { for (const row of rows) {
@@ -174,6 +181,12 @@ export class HeroBoxComp extends CCComp {
row.active = visible; row.active = visible;
} }
} }
// 展开/收起时切换属性栏高度125 ↔ 210
if (this.attr_box && this.attr_box.isValid) {
const transform = this.attr_box.getComponent(UITransform) || this.attr_box.addComponent(UITransform);
const height = visible ? HeroBoxComp.ATTR_BOX_HEIGHT_EXPANDED : HeroBoxComp.ATTR_BOX_HEIGHT_COLLAPSED;
transform.setContentSize(transform.width, height);
}
} }
/** ECS 组件移除时销毁节点 */ /** ECS 组件移除时销毁节点 */