diff --git a/assets/resources/gui/element/herobox.prefab b/assets/resources/gui/element/herobox.prefab
index 54b72568..338d3766 100644
--- a/assets/resources/gui/element/herobox.prefab
+++ b/assets/resources/gui/element/herobox.prefab
@@ -40,23 +40,23 @@
"__id__": 165
},
{
- "__id__": 433
+ "__id__": 441
}
],
"_active": true,
"_components": [
{
- "__id__": 466
+ "__id__": 474
},
{
- "__id__": 468
+ "__id__": 476
},
{
- "__id__": 470
+ "__id__": 478
}
],
"_prefab": {
- "__id__": 626
+ "__id__": 634
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -3038,24 +3038,24 @@
],
"_active": true,
"_components": [
- {
- "__id__": 422
- },
- {
- "__id__": 424
- },
- {
- "__id__": 426
- },
- {
- "__id__": 428
- },
{
"__id__": 430
+ },
+ {
+ "__id__": 432
+ },
+ {
+ "__id__": 434
+ },
+ {
+ "__id__": 436
+ },
+ {
+ "__id__": 438
}
],
"_prefab": {
- "__id__": 432
+ "__id__": 440
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -8409,27 +8409,30 @@
"_children": [
{
"__id__": 383
+ },
+ {
+ "__id__": 415
}
],
"_active": true,
"_components": [
{
- "__id__": 415
+ "__id__": 423
},
{
- "__id__": 417
+ "__id__": 425
},
{
- "__id__": 419
+ "__id__": 427
}
],
"_prefab": {
- "__id__": 421
+ "__id__": 429
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
- "y": -71.13500000000002,
+ "y": -146.13500000000002,
"z": 0
},
"_lrot": {
@@ -8740,7 +8743,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
- "y": 0,
+ "y": 75,
"z": 0
}
},
@@ -8912,6 +8915,174 @@
"1866cg+2xFI5dnowlaw71s"
]
},
+ {
+ "__type__": "cc.Node",
+ "_name": "RichText",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": {
+ "__id__": 382
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 416
+ },
+ {
+ "__id__": 418
+ },
+ {
+ "__id__": 420
+ }
+ ],
+ "_prefab": {
+ "__id__": 422
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": -20,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "w": 1
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 1073741824,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 415
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 417
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 190,
+ "height": 150
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "d7ZPkMN6pDgI7CuEPo3CSp"
+ },
+ {
+ "__type__": "cc.RichText",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 415
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 419
+ },
+ "_lineHeight": 16,
+ "_string": "RichText",
+ "_horizontalAlign": 0,
+ "_verticalAlign": 0,
+ "_fontSize": 15,
+ "_fontColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_maxWidth": 0,
+ "_fontFamily": "Arial",
+ "_font": null,
+ "_isSystemFontUsed": true,
+ "_userDefinedFont": null,
+ "_cacheMode": 0,
+ "_imageAtlas": null,
+ "_handleTouchEvent": true,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "889LOJLftHH5Cibnm6dPyL"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 415
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 421
+ },
+ "_alignFlags": 40,
+ "_target": null,
+ "_left": 10,
+ "_right": 10,
+ "_top": 2120,
+ "_bottom": 2080,
+ "_horizontalCenter": 0,
+ "_verticalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 120,
+ "_originalHeight": 40,
+ "_alignMode": 2,
+ "_lockFlags": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "a6YmDaXoZAJpOQsCfYoWnD"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "9aQIA8dvFEwIV7tWyw1rvr",
+ "instance": null,
+ "targetOverrides": null,
+ "nestedPrefabInstanceRoots": null
+ },
{
"__type__": "cc.UITransform",
"_name": "",
@@ -8922,12 +9093,12 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 416
+ "__id__": 424
},
"_contentSize": {
"__type__": "cc.Size",
"width": 210,
- "height": 40
+ "height": 190
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -8950,7 +9121,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 418
+ "__id__": 426
},
"_alignFlags": 40,
"_target": null,
@@ -8986,7 +9157,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 420
+ "__id__": 428
},
"_resizeMode": 1,
"_layoutType": 2,
@@ -9037,7 +9208,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 423
+ "__id__": 431
},
"_contentSize": {
"__type__": "cc.Size",
@@ -9065,7 +9236,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 425
+ "__id__": 433
},
"_type": 0,
"_inverted": false,
@@ -9087,7 +9258,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 427
+ "__id__": 435
},
"_alignFlags": 45,
"_target": null,
@@ -9123,7 +9294,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 429
+ "__id__": 437
},
"_resizeMode": 0,
"_layoutType": 2,
@@ -9161,7 +9332,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 431
+ "__id__": 439
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -9220,26 +9391,26 @@
},
"_children": [
{
- "__id__": 434
+ "__id__": 442
},
{
- "__id__": 453
+ "__id__": 461
}
],
"_active": false,
"_components": [
{
- "__id__": 459
+ "__id__": 467
},
{
- "__id__": 461
+ "__id__": 469
},
{
- "__id__": 463
+ "__id__": 471
}
],
"_prefab": {
- "__id__": 465
+ "__id__": 473
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -9274,17 +9445,17 @@
"__type__": "cc.Node",
"_objFlags": 0,
"_parent": {
- "__id__": 433
+ "__id__": 441
},
"_prefab": {
- "__id__": 435
+ "__id__": 443
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
- "__id__": 434
+ "__id__": 442
},
"asset": {
"__uuid__": "b8282f33-ab04-44c5-b349-4bdc291374e6",
@@ -9292,7 +9463,7 @@
},
"fileId": "53+ryxPCZCH4lnXIdDcAFq",
"instance": {
- "__id__": 436
+ "__id__": 444
},
"targetOverrides": null
},
@@ -9306,37 +9477,37 @@
"mountedComponents": [],
"propertyOverrides": [
{
- "__id__": 437
+ "__id__": 445
},
{
- "__id__": 439
- },
- {
- "__id__": 440
- },
- {
- "__id__": 441
- },
- {
- "__id__": 442
- },
- {
- "__id__": 444
- },
- {
- "__id__": 446
+ "__id__": 447
},
{
"__id__": 448
},
+ {
+ "__id__": 449
+ },
{
"__id__": 450
},
{
- "__id__": 451
+ "__id__": 452
},
{
- "__id__": 452
+ "__id__": 454
+ },
+ {
+ "__id__": 456
+ },
+ {
+ "__id__": 458
+ },
+ {
+ "__id__": 459
+ },
+ {
+ "__id__": 460
}
],
"removedComponents": []
@@ -9344,7 +9515,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 438
+ "__id__": 446
},
"propertyPath": [
"_name"
@@ -9360,7 +9531,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 438
+ "__id__": 446
},
"propertyPath": [
"_lpos"
@@ -9375,7 +9546,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 438
+ "__id__": 446
},
"propertyPath": [
"_lrot"
@@ -9391,7 +9562,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 438
+ "__id__": 446
},
"propertyPath": [
"_euler"
@@ -9406,7 +9577,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 443
+ "__id__": 451
},
"propertyPath": [
"_contentSize"
@@ -9426,7 +9597,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 445
+ "__id__": 453
},
"propertyPath": [
"_contentSize"
@@ -9446,7 +9617,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 447
+ "__id__": 455
},
"propertyPath": [
"_contentSize"
@@ -9466,7 +9637,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 449
+ "__id__": 457
},
"propertyPath": [
"_left"
@@ -9482,7 +9653,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 449
+ "__id__": 457
},
"propertyPath": [
"_right"
@@ -9492,7 +9663,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 449
+ "__id__": 457
},
"propertyPath": [
"_top"
@@ -9502,7 +9673,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 449
+ "__id__": 457
},
"propertyPath": [
"_bottom"
@@ -9515,20 +9686,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 433
+ "__id__": 441
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 454
+ "__id__": 462
},
{
- "__id__": 456
+ "__id__": 464
}
],
"_prefab": {
- "__id__": 458
+ "__id__": 466
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -9565,11 +9736,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 453
+ "__id__": 461
},
"_enabled": true,
"__prefab": {
- "__id__": 455
+ "__id__": 463
},
"_contentSize": {
"__type__": "cc.Size",
@@ -9593,11 +9764,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 453
+ "__id__": 461
},
"_enabled": true,
"__prefab": {
- "__id__": 457
+ "__id__": 465
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -9651,11 +9822,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 433
+ "__id__": 441
},
"_enabled": true,
"__prefab": {
- "__id__": 460
+ "__id__": 468
},
"_contentSize": {
"__type__": "cc.Size",
@@ -9679,11 +9850,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 433
+ "__id__": 441
},
"_enabled": true,
"__prefab": {
- "__id__": 462
+ "__id__": 470
},
"_alignFlags": 45,
"_target": null,
@@ -9715,11 +9886,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 433
+ "__id__": 441
},
"_enabled": true,
"__prefab": {
- "__id__": 464
+ "__id__": 472
},
"_id": ""
},
@@ -9750,7 +9921,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 467
+ "__id__": 475
},
"_contentSize": {
"__type__": "cc.Size",
@@ -9778,7 +9949,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 469
+ "__id__": 477
},
"_alignFlags": 0,
"_target": null,
@@ -9814,13 +9985,13 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 471
+ "__id__": 479
},
"icon_node": {
- "__id__": 472
+ "__id__": 480
},
"bg_node": {
- "__id__": 512
+ "__id__": 520
},
"name_label": {
"__id__": 88
@@ -9829,7 +10000,10 @@
"__id__": 391
},
"noHero": {
- "__id__": 433
+ "__id__": 441
+ },
+ "skill_label": {
+ "__id__": 418
},
"ap_all_label": {
"__id__": 109
@@ -9924,20 +10098,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 473
+ "__id__": 481
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 507
+ "__id__": 515
},
{
- "__id__": 509
+ "__id__": 517
}
],
"_prefab": {
- "__id__": 511
+ "__id__": 519
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -9978,38 +10152,38 @@
},
"_children": [
{
- "__id__": 474
- },
- {
- "__id__": 472
+ "__id__": 482
},
{
"__id__": 480
},
{
- "__id__": 486
+ "__id__": 488
},
{
- "__id__": 492
+ "__id__": 494
+ },
+ {
+ "__id__": 500
}
],
"_active": true,
"_components": [
{
- "__id__": 498
+ "__id__": 506
},
{
- "__id__": 500
+ "__id__": 508
},
{
- "__id__": 502
+ "__id__": 510
},
{
- "__id__": 504
+ "__id__": 512
}
],
"_prefab": {
- "__id__": 506
+ "__id__": 514
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10046,20 +10220,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 473
+ "__id__": 481
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 475
+ "__id__": 483
},
{
- "__id__": 477
+ "__id__": 485
}
],
"_prefab": {
- "__id__": 479
+ "__id__": 487
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10096,11 +10270,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 474
+ "__id__": 482
},
"_enabled": true,
"__prefab": {
- "__id__": 476
+ "__id__": 484
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10124,11 +10298,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 474
+ "__id__": 482
},
"_enabled": true,
"__prefab": {
- "__id__": 478
+ "__id__": 486
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10182,20 +10356,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 473
+ "__id__": 481
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 481
+ "__id__": 489
},
{
- "__id__": 483
+ "__id__": 491
}
],
"_prefab": {
- "__id__": 485
+ "__id__": 493
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10232,11 +10406,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 480
+ "__id__": 488
},
"_enabled": true,
"__prefab": {
- "__id__": 482
+ "__id__": 490
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10260,11 +10434,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 480
+ "__id__": 488
},
"_enabled": true,
"__prefab": {
- "__id__": 484
+ "__id__": 492
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10318,20 +10492,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 473
+ "__id__": 481
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 487
+ "__id__": 495
},
{
- "__id__": 489
+ "__id__": 497
}
],
"_prefab": {
- "__id__": 491
+ "__id__": 499
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10368,11 +10542,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 486
+ "__id__": 494
},
"_enabled": true,
"__prefab": {
- "__id__": 488
+ "__id__": 496
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10396,11 +10570,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 486
+ "__id__": 494
},
"_enabled": true,
"__prefab": {
- "__id__": 490
+ "__id__": 498
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10454,20 +10628,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 473
+ "__id__": 481
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 493
+ "__id__": 501
},
{
- "__id__": 495
+ "__id__": 503
}
],
"_prefab": {
- "__id__": 497
+ "__id__": 505
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10504,11 +10678,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 492
+ "__id__": 500
},
"_enabled": true,
"__prefab": {
- "__id__": 494
+ "__id__": 502
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10532,11 +10706,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 492
+ "__id__": 500
},
"_enabled": true,
"__prefab": {
- "__id__": 496
+ "__id__": 504
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10590,11 +10764,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 473
+ "__id__": 481
},
"_enabled": true,
"__prefab": {
- "__id__": 499
+ "__id__": 507
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10618,11 +10792,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 473
+ "__id__": 481
},
"_enabled": true,
"__prefab": {
- "__id__": 501
+ "__id__": 509
},
"_type": 0,
"_inverted": false,
@@ -10640,11 +10814,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 473
+ "__id__": 481
},
"_enabled": true,
"__prefab": {
- "__id__": 503
+ "__id__": 511
},
"_alignFlags": 45,
"_target": null,
@@ -10676,11 +10850,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 473
+ "__id__": 481
},
"_enabled": true,
"__prefab": {
- "__id__": 505
+ "__id__": 513
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10735,11 +10909,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 472
+ "__id__": 480
},
"_enabled": true,
"__prefab": {
- "__id__": 508
+ "__id__": 516
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10763,11 +10937,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 472
+ "__id__": 480
},
"_enabled": true,
"__prefab": {
- "__id__": 510
+ "__id__": 518
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10822,35 +10996,35 @@
},
"_children": [
{
- "__id__": 513
+ "__id__": 521
},
{
- "__id__": 529
+ "__id__": 537
},
{
- "__id__": 545
+ "__id__": 553
},
{
- "__id__": 561
+ "__id__": 569
},
{
- "__id__": 577
+ "__id__": 585
},
{
- "__id__": 593
+ "__id__": 601
}
],
"_active": true,
"_components": [
{
- "__id__": 621
+ "__id__": 629
},
{
- "__id__": 623
+ "__id__": 631
}
],
"_prefab": {
- "__id__": 625
+ "__id__": 633
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10887,27 +11061,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
{
- "__id__": 514
+ "__id__": 522
}
],
"_active": true,
"_components": [
{
- "__id__": 522
+ "__id__": 530
},
{
- "__id__": 524
+ "__id__": 532
},
{
- "__id__": 526
+ "__id__": 534
}
],
"_prefab": {
- "__id__": 528
+ "__id__": 536
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10944,23 +11118,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 513
+ "__id__": 521
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 515
+ "__id__": 523
},
{
- "__id__": 517
+ "__id__": 525
},
{
- "__id__": 519
+ "__id__": 527
}
],
"_prefab": {
- "__id__": 521
+ "__id__": 529
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10997,11 +11171,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 514
+ "__id__": 522
},
"_enabled": true,
"__prefab": {
- "__id__": 516
+ "__id__": 524
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11025,11 +11199,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 514
+ "__id__": 522
},
"_enabled": true,
"__prefab": {
- "__id__": 518
+ "__id__": 526
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11073,11 +11247,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 514
+ "__id__": 522
},
"_enabled": true,
"__prefab": {
- "__id__": 520
+ "__id__": 528
},
"_alignFlags": 45,
"_target": null,
@@ -11122,11 +11296,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 513
+ "__id__": 521
},
"_enabled": true,
"__prefab": {
- "__id__": 523
+ "__id__": 531
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11150,11 +11324,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 513
+ "__id__": 521
},
"_enabled": true,
"__prefab": {
- "__id__": 525
+ "__id__": 533
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11198,11 +11372,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 513
+ "__id__": 521
},
"_enabled": true,
"__prefab": {
- "__id__": 527
+ "__id__": 535
},
"_alignFlags": 45,
"_target": null,
@@ -11247,27 +11421,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
{
- "__id__": 530
+ "__id__": 538
}
],
"_active": true,
"_components": [
{
- "__id__": 538
+ "__id__": 546
},
{
- "__id__": 540
+ "__id__": 548
},
{
- "__id__": 542
+ "__id__": 550
}
],
"_prefab": {
- "__id__": 544
+ "__id__": 552
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11304,23 +11478,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 529
+ "__id__": 537
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 531
+ "__id__": 539
},
{
- "__id__": 533
+ "__id__": 541
},
{
- "__id__": 535
+ "__id__": 543
}
],
"_prefab": {
- "__id__": 537
+ "__id__": 545
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11357,11 +11531,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 530
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 532
+ "__id__": 540
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11385,11 +11559,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 530
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 534
+ "__id__": 542
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11430,11 +11604,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 530
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 536
+ "__id__": 544
},
"_alignFlags": 45,
"_target": null,
@@ -11479,11 +11653,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 537
},
"_enabled": true,
"__prefab": {
- "__id__": 539
+ "__id__": 547
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11507,11 +11681,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 537
},
"_enabled": true,
"__prefab": {
- "__id__": 541
+ "__id__": 549
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11555,11 +11729,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 537
},
"_enabled": true,
"__prefab": {
- "__id__": 543
+ "__id__": 551
},
"_alignFlags": 45,
"_target": null,
@@ -11604,27 +11778,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
{
- "__id__": 546
+ "__id__": 554
}
],
"_active": true,
"_components": [
{
- "__id__": 554
+ "__id__": 562
},
{
- "__id__": 556
+ "__id__": 564
},
{
- "__id__": 558
+ "__id__": 566
}
],
"_prefab": {
- "__id__": 560
+ "__id__": 568
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11661,23 +11835,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 545
+ "__id__": 553
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 547
+ "__id__": 555
},
{
- "__id__": 549
+ "__id__": 557
},
{
- "__id__": 551
+ "__id__": 559
}
],
"_prefab": {
- "__id__": 553
+ "__id__": 561
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11714,11 +11888,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 546
+ "__id__": 554
},
"_enabled": true,
"__prefab": {
- "__id__": 548
+ "__id__": 556
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11742,11 +11916,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 546
+ "__id__": 554
},
"_enabled": true,
"__prefab": {
- "__id__": 550
+ "__id__": 558
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11790,11 +11964,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 546
+ "__id__": 554
},
"_enabled": true,
"__prefab": {
- "__id__": 552
+ "__id__": 560
},
"_alignFlags": 45,
"_target": null,
@@ -11839,11 +12013,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 545
+ "__id__": 553
},
"_enabled": true,
"__prefab": {
- "__id__": 555
+ "__id__": 563
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11867,11 +12041,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 545
+ "__id__": 553
},
"_enabled": true,
"__prefab": {
- "__id__": 557
+ "__id__": 565
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11915,11 +12089,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 545
+ "__id__": 553
},
"_enabled": true,
"__prefab": {
- "__id__": 559
+ "__id__": 567
},
"_alignFlags": 45,
"_target": null,
@@ -11964,27 +12138,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
{
- "__id__": 562
+ "__id__": 570
}
],
"_active": true,
"_components": [
{
- "__id__": 570
+ "__id__": 578
},
{
- "__id__": 572
+ "__id__": 580
},
{
- "__id__": 574
+ "__id__": 582
}
],
"_prefab": {
- "__id__": 576
+ "__id__": 584
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12021,23 +12195,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 561
+ "__id__": 569
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 563
+ "__id__": 571
},
{
- "__id__": 565
+ "__id__": 573
},
{
- "__id__": 567
+ "__id__": 575
}
],
"_prefab": {
- "__id__": 569
+ "__id__": 577
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12074,11 +12248,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 562
+ "__id__": 570
},
"_enabled": true,
"__prefab": {
- "__id__": 564
+ "__id__": 572
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12102,11 +12276,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 562
+ "__id__": 570
},
"_enabled": true,
"__prefab": {
- "__id__": 566
+ "__id__": 574
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12150,11 +12324,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 562
+ "__id__": 570
},
"_enabled": true,
"__prefab": {
- "__id__": 568
+ "__id__": 576
},
"_alignFlags": 45,
"_target": null,
@@ -12199,11 +12373,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 561
+ "__id__": 569
},
"_enabled": true,
"__prefab": {
- "__id__": 571
+ "__id__": 579
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12227,11 +12401,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 561
+ "__id__": 569
},
"_enabled": true,
"__prefab": {
- "__id__": 573
+ "__id__": 581
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12275,11 +12449,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 561
+ "__id__": 569
},
"_enabled": true,
"__prefab": {
- "__id__": 575
+ "__id__": 583
},
"_alignFlags": 45,
"_target": null,
@@ -12324,27 +12498,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
{
- "__id__": 578
+ "__id__": 586
}
],
"_active": true,
"_components": [
{
- "__id__": 586
+ "__id__": 594
},
{
- "__id__": 588
+ "__id__": 596
},
{
- "__id__": 590
+ "__id__": 598
}
],
"_prefab": {
- "__id__": 592
+ "__id__": 600
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12381,23 +12555,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 577
+ "__id__": 585
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 579
+ "__id__": 587
},
{
- "__id__": 581
+ "__id__": 589
},
{
- "__id__": 583
+ "__id__": 591
}
],
"_prefab": {
- "__id__": 585
+ "__id__": 593
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12434,11 +12608,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 578
+ "__id__": 586
},
"_enabled": true,
"__prefab": {
- "__id__": 580
+ "__id__": 588
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12462,11 +12636,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 578
+ "__id__": 586
},
"_enabled": true,
"__prefab": {
- "__id__": 582
+ "__id__": 590
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12510,11 +12684,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 578
+ "__id__": 586
},
"_enabled": true,
"__prefab": {
- "__id__": 584
+ "__id__": 592
},
"_alignFlags": 45,
"_target": null,
@@ -12559,11 +12733,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 577
+ "__id__": 585
},
"_enabled": true,
"__prefab": {
- "__id__": 587
+ "__id__": 595
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12587,11 +12761,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 577
+ "__id__": 585
},
"_enabled": true,
"__prefab": {
- "__id__": 589
+ "__id__": 597
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12635,11 +12809,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 577
+ "__id__": 585
},
"_enabled": true,
"__prefab": {
- "__id__": 591
+ "__id__": 599
},
"_alignFlags": 45,
"_target": null,
@@ -12684,27 +12858,27 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 512
+ "__id__": 520
},
"_children": [
- {
- "__id__": 594
- },
{
"__id__": 602
},
{
"__id__": 610
+ },
+ {
+ "__id__": 618
}
],
"_active": false,
"_components": [
{
- "__id__": 618
+ "__id__": 626
}
],
"_prefab": {
- "__id__": 620
+ "__id__": 628
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12741,183 +12915,8 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 593
- },
- "_children": [],
- "_active": true,
- "_components": [
- {
- "__id__": 595
- },
- {
- "__id__": 597
- },
- {
- "__id__": 599
- }
- ],
- "_prefab": {
"__id__": 601
},
- "_lpos": {
- "__type__": "cc.Vec3",
- "x": 0,
- "y": 0,
- "z": 0
- },
- "_lrot": {
- "__type__": "cc.Quat",
- "x": 0,
- "y": 0,
- "z": 0,
- "w": 1
- },
- "_lscale": {
- "__type__": "cc.Vec3",
- "x": 1,
- "y": 1,
- "z": 1
- },
- "_mobility": 0,
- "_layer": 1073741824,
- "_euler": {
- "__type__": "cc.Vec3",
- "x": 0,
- "y": 0,
- "z": 0
- },
- "_id": ""
- },
- {
- "__type__": "cc.UITransform",
- "_name": "",
- "_objFlags": 0,
- "__editorExtras__": {},
- "node": {
- "__id__": 594
- },
- "_enabled": true,
- "__prefab": {
- "__id__": 596
- },
- "_contentSize": {
- "__type__": "cc.Size",
- "width": 96,
- "height": 96
- },
- "_anchorPoint": {
- "__type__": "cc.Vec2",
- "x": 0.5,
- "y": 0.5
- },
- "_id": ""
- },
- {
- "__type__": "cc.CompPrefabInfo",
- "fileId": "e2LJMsJCxMdZP6mZ0DhjCz"
- },
- {
- "__type__": "cc.Sprite",
- "_name": "",
- "_objFlags": 0,
- "__editorExtras__": {},
- "node": {
- "__id__": 594
- },
- "_enabled": true,
- "__prefab": {
- "__id__": 598
- },
- "_customMaterial": null,
- "_srcBlendFactor": 2,
- "_dstBlendFactor": 4,
- "_color": {
- "__type__": "cc.Color",
- "r": 87,
- "g": 126,
- "b": 185,
- "a": 255
- },
- "_spriteFrame": {
- "__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@9bd48",
- "__expectedType__": "cc.SpriteFrame"
- },
- "_type": 1,
- "_fillType": 0,
- "_sizeMode": 0,
- "_fillCenter": {
- "__type__": "cc.Vec2",
- "x": 0,
- "y": 0
- },
- "_fillStart": 0,
- "_fillRange": 0,
- "_isTrimmedMode": true,
- "_useGrayscale": false,
- "_atlas": null,
- "_id": ""
- },
- {
- "__type__": "cc.CompPrefabInfo",
- "fileId": "cdw29+nndGY4mHhULUKpcp"
- },
- {
- "__type__": "cc.Widget",
- "_name": "",
- "_objFlags": 0,
- "__editorExtras__": {},
- "node": {
- "__id__": 594
- },
- "_enabled": true,
- "__prefab": {
- "__id__": 600
- },
- "_alignFlags": 45,
- "_target": null,
- "_left": 2,
- "_right": 2,
- "_top": 2,
- "_bottom": 2,
- "_horizontalCenter": 0,
- "_verticalCenter": 0,
- "_isAbsLeft": true,
- "_isAbsRight": true,
- "_isAbsTop": true,
- "_isAbsBottom": true,
- "_isAbsHorizontalCenter": true,
- "_isAbsVerticalCenter": true,
- "_originalWidth": 48,
- "_originalHeight": 48,
- "_alignMode": 2,
- "_lockFlags": 0,
- "_id": ""
- },
- {
- "__type__": "cc.CompPrefabInfo",
- "fileId": "c29FKZj1dLY7MBfjR9CZ1j"
- },
- {
- "__type__": "cc.PrefabInfo",
- "root": {
- "__id__": 1
- },
- "asset": {
- "__id__": 0
- },
- "fileId": "deVarRuaFN1LhVMF8Wr72H",
- "instance": null,
- "targetOverrides": null,
- "nestedPrefabInstanceRoots": null
- },
- {
- "__type__": "cc.Node",
- "_name": "ItemFrame_Square_03_InnerBorder2",
- "_objFlags": 0,
- "__editorExtras__": {},
- "_parent": {
- "__id__": 593
- },
"_children": [],
"_active": true,
"_components": [
@@ -12977,8 +12976,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 88,
- "height": 88
+ "width": 96,
+ "height": 96
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -12989,7 +12988,7 @@
},
{
"__type__": "cc.CompPrefabInfo",
- "fileId": "76Sa4mmOZMQrMumtAHxyo2"
+ "fileId": "e2LJMsJCxMdZP6mZ0DhjCz"
},
{
"__type__": "cc.Sprite",
@@ -13008,13 +13007,13 @@
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
- "r": 38,
- "g": 61,
- "b": 112,
+ "r": 87,
+ "g": 126,
+ "b": 185,
"a": 255
},
"_spriteFrame": {
- "__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@d2e99",
+ "__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@9bd48",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 1,
@@ -13034,7 +13033,7 @@
},
{
"__type__": "cc.CompPrefabInfo",
- "fileId": "a8HgrX5AFGlZ/cUTnUe2mr"
+ "fileId": "cdw29+nndGY4mHhULUKpcp"
},
{
"__type__": "cc.Widget",
@@ -13050,10 +13049,10 @@
},
"_alignFlags": 45,
"_target": null,
- "_left": 6,
- "_right": 6,
- "_top": 6,
- "_bottom": 6,
+ "_left": 2,
+ "_right": 2,
+ "_top": 2,
+ "_bottom": 2,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -13062,15 +13061,15 @@
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
- "_originalWidth": 40,
- "_originalHeight": 40,
+ "_originalWidth": 48,
+ "_originalHeight": 48,
"_alignMode": 2,
"_lockFlags": 0,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
- "fileId": "ea6Ym3niBBkZkK1S3FsMEf"
+ "fileId": "c29FKZj1dLY7MBfjR9CZ1j"
},
{
"__type__": "cc.PrefabInfo",
@@ -13080,18 +13079,18 @@
"asset": {
"__id__": 0
},
- "fileId": "68ynJ6KthFHKvnm/9hhwDy",
+ "fileId": "deVarRuaFN1LhVMF8Wr72H",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
- "_name": "ItemFrame_Square_03_Border",
+ "_name": "ItemFrame_Square_03_InnerBorder2",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 593
+ "__id__": 601
},
"_children": [],
"_active": true,
@@ -13150,6 +13149,181 @@
"__prefab": {
"__id__": 612
},
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 88,
+ "height": 88
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "76Sa4mmOZMQrMumtAHxyo2"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 610
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 614
+ },
+ "_customMaterial": null,
+ "_srcBlendFactor": 2,
+ "_dstBlendFactor": 4,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 38,
+ "g": 61,
+ "b": 112,
+ "a": 255
+ },
+ "_spriteFrame": {
+ "__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@d2e99",
+ "__expectedType__": "cc.SpriteFrame"
+ },
+ "_type": 1,
+ "_fillType": 0,
+ "_sizeMode": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_useGrayscale": false,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "a8HgrX5AFGlZ/cUTnUe2mr"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 610
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 616
+ },
+ "_alignFlags": 45,
+ "_target": null,
+ "_left": 6,
+ "_right": 6,
+ "_top": 6,
+ "_bottom": 6,
+ "_horizontalCenter": 0,
+ "_verticalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 40,
+ "_originalHeight": 40,
+ "_alignMode": 2,
+ "_lockFlags": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "ea6Ym3niBBkZkK1S3FsMEf"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "68ynJ6KthFHKvnm/9hhwDy",
+ "instance": null,
+ "targetOverrides": null,
+ "nestedPrefabInstanceRoots": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ItemFrame_Square_03_Border",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": {
+ "__id__": 601
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 619
+ },
+ {
+ "__id__": 621
+ },
+ {
+ "__id__": 623
+ }
+ ],
+ "_prefab": {
+ "__id__": 625
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "w": 1
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 1073741824,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 618
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 620
+ },
"_contentSize": {
"__type__": "cc.Size",
"width": 100,
@@ -13172,11 +13346,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 610
+ "__id__": 618
},
"_enabled": true,
"__prefab": {
- "__id__": 614
+ "__id__": 622
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13217,11 +13391,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 610
+ "__id__": 618
},
"_enabled": true,
"__prefab": {
- "__id__": 616
+ "__id__": 624
},
"_alignFlags": 45,
"_target": null,
@@ -13266,11 +13440,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 593
+ "__id__": 601
},
"_enabled": true,
"__prefab": {
- "__id__": 619
+ "__id__": 627
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13307,11 +13481,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 512
+ "__id__": 520
},
"_enabled": true,
"__prefab": {
- "__id__": 622
+ "__id__": 630
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13335,11 +13509,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 512
+ "__id__": 520
},
"_enabled": true,
"__prefab": {
- "__id__": 624
+ "__id__": 632
},
"_alignFlags": 45,
"_target": null,
@@ -13390,21 +13564,21 @@
"instance": null,
"targetOverrides": [
{
- "__id__": 627
+ "__id__": 635
},
{
- "__id__": 629
+ "__id__": 637
},
{
- "__id__": 631
+ "__id__": 639
},
{
- "__id__": 633
+ "__id__": 641
}
],
"nestedPrefabInstanceRoots": [
{
- "__id__": 434
+ "__id__": 442
},
{
"__id__": 383
@@ -13431,7 +13605,7 @@
"__id__": 27
},
"targetInfo": {
- "__id__": 628
+ "__id__": 636
}
},
{
@@ -13443,7 +13617,7 @@
{
"__type__": "cc.TargetOverrideInfo",
"source": {
- "__id__": 470
+ "__id__": 478
},
"sourceInfo": null,
"propertyPath": [
@@ -13453,7 +13627,7 @@
"__id__": 27
},
"targetInfo": {
- "__id__": 630
+ "__id__": 638
}
},
{
@@ -13465,7 +13639,7 @@
{
"__type__": "cc.TargetOverrideInfo",
"source": {
- "__id__": 470
+ "__id__": 478
},
"sourceInfo": null,
"propertyPath": [
@@ -13475,7 +13649,7 @@
"__id__": 27
},
"targetInfo": {
- "__id__": 632
+ "__id__": 640
}
},
{
@@ -13487,7 +13661,7 @@
{
"__type__": "cc.TargetOverrideInfo",
"source": {
- "__id__": 470
+ "__id__": 478
},
"sourceInfo": null,
"propertyPath": [
@@ -13497,7 +13671,7 @@
"__id__": 383
},
"targetInfo": {
- "__id__": 634
+ "__id__": 642
}
},
{
diff --git a/assets/script/game/common/config/HeroSkillDesc.ts b/assets/script/game/common/config/HeroSkillDesc.ts
index 471b995f..f5ff13cc 100644
--- a/assets/script/game/common/config/HeroSkillDesc.ts
+++ b/assets/script/game/common/config/HeroSkillDesc.ts
@@ -8,10 +8,15 @@
* 依据结构化配置动态拼出,数值永远来自 mergeSkillParams 合并后的实时配置,
* 杜绝"改数值忘改文案"的漂移。
*
+ * 输出(双格式,供 UI 按需取用):
+ * - buildSkillDesc(source) → 纯文本(Label 用),数值无颜色
+ * - buildSkillDescRich(source) → 富文本(RichText 用,BBCode),数值用 高亮
+ * 两者共用同一套结构化行构建逻辑,仅渲染阶段区分,保证纯/富文本内容严格一致。
+ *
* 通用性(纯配置驱动):
* 1. 触发框架:按触发类型遍历(SkillSet + overrides,不动)
* 2. 效果文案:查 SkillDescSet 结构化模板渲染
- * 3. 目标/单位/属性名:由本模块统一语义化(target/hit_count、ATTR_NAME)
+ * 3. 目标/属性名:由本模块统一语义化(target/hit_count、ATTR_NAME)
*
* 数据源(入参抽象 ISkillDescSource):
* heroInfo(静态 1 级配置)与 HeroAttrsComp(运行时应用 evolve 后的当前等级配置)
@@ -49,8 +54,19 @@ export interface ISkillDescSource {
}
/**
- * 需要遍历的触发技能类型列表(不含 Field 和 Revive,这两者结构不同需单独处理)
+ * 一条能力的结构化行:数值片段单独抽出,供富文本高亮与纯文本复用。
+ * 渲染结果 = prefix + value(可高亮) + suffix。
*/
+interface ISkillLine {
+ /** 数值前的文本(含触发条件、技能名、目标、动词等) */
+ prefix: string;
+ /** 需要高亮的核心数值文本(如 "15%"、"4次"、"+30"),无数值时为 "" */
+ value: string;
+ /** 数值后的文本(如 ",持续5秒" 之类尾部补充) */
+ suffix: string;
+}
+
+/** 需要遍历的触发技能类型列表(不含 Field 和 Revive,这两者结构不同需单独处理) */
const TRIGGER_KEYS: SkillTriggerType[] = [
SkillTriggerType.Call,
SkillTriggerType.Dead,
@@ -60,24 +76,16 @@ const TRIGGER_KEYS: SkillTriggerType[] = [
SkillTriggerType.Atked,
];
-/**
- * 属性标准中文名映射(文字表达标准层的统一称谓,供 evolve 额外加成文案使用)
- * 仅覆盖 evolve.ap_bonus / hp_bonus 用到的属性;其余按需补充。
- */
+/** 属性标准中文名映射(统一称谓,供 evolve 额外加成文案使用),仅覆盖 ap_bonus/hp_bonus 用到的属性 */
const ATTR_NAME: Partial> = {
[Attrs.ap]: "攻击力",
[Attrs.hp_max]: "最大生命",
};
-/**
- * 解析目标描述文本(与战斗 SCastSystem 目标选取语义严格一致)
- *
- * Why: Team 下 hit_count 表示"从全队中选取 N 个目标"(随机/血量最低),
- * 并非全体。全体友方仅在 Ally / All 或未限定数量的 Team 群体光环语义下使用。
- *
- * @param skill 合并 overrides 后的技能配置
- * @returns 目标短语,如 "自身"/"随机2名队友"/"血量最低队友"/"全体友方"/"敌方"
- */
+/** 富文本数值高亮色(项目色板:金色,与等级配色协调) */
+const RICH_VALUE_COLOR = "#F1C40F";
+
+/** 解析目标描述文本(与战斗 SCastSystem 目标选取语义严格一致) */
function buildTargetDesc(skill: SkillConfig): string {
switch (skill.TGroup) {
case TGroup.Self:
@@ -89,9 +97,9 @@ function buildTargetDesc(skill: SkillConfig): string {
return "全体友方";
case TGroup.Team: {
const n = Math.max(1, Math.floor(skill.hit_count ?? 1));
- // 治疗类命中的是血量最低队友(SCastSystem.pickHealTargetsByMostMissingHp)
+ // 治疗类命中最缺血队友(SCastSystem.pickHealTargetsByMostMissingHp)
if (skill.kind === SkillKind.Heal) {
- return n > 1 ? `${n}名血量最低队友` : "血量最低队友";
+ return n > 1 ? `${n}名最缺血队友` : "最缺血队友";
}
return `随机${n}名队友`;
}
@@ -101,28 +109,53 @@ function buildTargetDesc(skill: SkillConfig): string {
}
/**
- * 占位符模板替换
+ * 占位符模板替换,并把"核心数值片段"用 \x01...\x02 标记,便于上层拆分高亮。
+ *
+ * Why: 模板中 {value}{unit} 是玩家最关心的数值。这里在渲染时将其单独包裹,
+ * 使富文本可对其单独上色,纯文本则剥离标记后原样拼接,保证两种输出内容一致。
+ *
+ * @returns 含 \x01hlValue\x02 标记的完整文本
*/
-function renderTemplate(templ: string, vars: Record): string {
+function renderTemplate(templ: string, vars: Record, hlValue: string): string {
let out = templ;
for (const key of Object.keys(vars)) {
out = out.split(`{${key}}`).join(String(vars[key]));
}
- return out;
+ // 用 \x01...\x02 包裹数值片段作为标记,便于上层拆分为 prefix/value/suffix
+ return out.split(hlValue).join(`\x01${hlValue}\x02`);
}
/**
- * 根据合并后的技能配置生成效果描述文本(查 SkillDescSet 结构化模板渲染)
+ * 由一行模板渲染结果构造结构化行(剥离 \x01\x02 标记,把数值片段拆到 value 字段)
+ * @param head 行首(触发条件:技能名 )
+ * @param rendered 已用 \x01...\x02 标记数值片段的效果文本
+ */
+function makeLine(head: string, rendered: string): ISkillLine {
+ const start = rendered.indexOf("\x01");
+ const end = rendered.indexOf("\x02");
+ if (start >= 0 && end > start) {
+ // 恰好含一个数值片段:prefix=行首+数值前文本,value=数值,suffix=数值后文本
+ return {
+ prefix: `${head}${rendered.slice(0, start)}`,
+ value: rendered.slice(start + 1, end),
+ suffix: rendered.slice(end + 1),
+ };
+ }
+ // 无数值片段(未命中模板或兜底 info):剥离残留标记,整行作为 prefix,不高亮
+ return { prefix: `${head}${rendered.replace(/[\x01\x02]/g, "")}`, value: "", suffix: "" };
+}
+
+/**
+ * 根据合并后的技能配置构造结构化效果行(查 SkillDescSet 模板渲染 + 数值高亮抽取)
*
* 计时模式默认值兜底:
* overrides 仅给 timed_buff_id 而未覆写 buff_value / buff_duration 时,
- * 从 BuffList[timed_buff_id] 取默认值(value=modifiers[0].value,dur=duration),
- * 保证 1 级基础档文案也完整(如占卜师 1 级"攻击力+30,持续5秒")。
+ * 从 BuffList[timed_buff_id] 取默认值,保证 1 级基础档文案完整。
*/
-function buildEffectDesc(skill: SkillConfig): string {
+function buildEffectLine(head: string, skill: SkillConfig): ISkillLine {
const desc = SkillDescSet[skill.uuid];
- // 未入表技能回退基础备注 info,保证未迁移技能不报错
- if (!desc) return String(skill.info ?? "");
+ // 未入表技能回退基础备注 info,无法抽出数值,整行不高亮
+ if (!desc) return { prefix: `${head}${String(skill.info ?? "")}`, value: "", suffix: "" };
const buff = skill.timed_buff_id !== undefined ? BuffList[skill.timed_buff_id] : undefined;
const isTimed = buff !== undefined && !!desc.templTimed;
@@ -135,45 +168,43 @@ function buildEffectDesc(skill: SkillConfig): string {
value = buff!.modifiers?.[0]?.value ?? buff!.tick?.damage_or_heal ?? 0;
}
value = value ?? 0;
-
- // 持续时间:overrides 覆写优先,否则用 BuffList 默认 duration
const dur = skill.buff_duration ?? buff?.duration ?? 0;
- return renderTemplate(templ, {
+ // 高亮片段 = 数值 + 单位(如 "15%"、"4次"、"+30"),是玩家视觉焦点
+ const hlValue = `${value}${desc.unit}`;
+ const rendered = renderTemplate(templ, {
target: buildTargetDesc(skill),
value: value,
unit: desc.unit,
verb: desc.verb,
dur: dur,
- });
+ }, hlValue);
+ return makeLine(head, rendered);
}
/**
- * 计算当前等级下 revive 的实际复活次数与回血百分比,生成完整复活文案
- *
- * 与战斗 HeroAtkSystem 语义一致:
- * 复活次数 = r_num + floor((lv - 1) * upr)
- * 回血百分比 = SkillSet[revive.s_uuid].ap
+ * 复活(revive)结构化行:复刻战斗公式,高亮复活次数与回血百分比
+ * 复活次数 = r_num + floor((lv - 1) * upr);回血百分比 = SkillSet[s_uuid].ap
*/
-function buildReviveDesc(source: ISkillDescSource): string {
+function buildReviveLine(source: ISkillDescSource): ISkillLine | null {
const revive = source.revive;
- if (!revive) return "";
+ if (!revive) return null;
const base = SkillSet[revive.s_uuid];
- if (!base) return "";
+ if (!base) return null;
const lv = Math.max(1, source.lv ?? 1);
const maxCount = revive.r_num + Math.floor((lv - 1) * revive.upr);
const hpPct = base.ap ?? 0;
const tpl = SkillTriggerDesc[SkillTriggerType.Revive] ?? "复活时";
- return `${tpl}:${base.name} 可复活${maxCount}次,每次恢复${hpPct}%生命`;
+ // 高亮片段选回血百分比(数值中最关键的收益指标)
+ return {
+ prefix: `${tpl}:${base.name} 可复活${maxCount}次,每次恢复`,
+ value: `${hpPct}%`,
+ suffix: "生命",
+ };
}
-/**
- * 累计当前等级已生效的 evolve 额外属性加成(ap_bonus / hp_bonus),生成文案行
- *
- * Why: evolve 的属性加成不体现在触发技能配置里,若不平铺成文字,面板上该部分
- * 能力会静默丢失。这里按 lv 从 2 级累计到当前等级,逐条输出。
- */
-function buildEvolveBonusLines(source: ISkillDescSource): string[] {
+/** evolve 额外属性加成(ap/hp)累计结构化行:高亮累计数值 */
+function buildEvolveBonusLines(source: ISkillDescSource): ISkillLine[] {
const evolve = source.evolve;
if (!evolve) return [];
const lv = Math.max(1, source.lv ?? 1);
@@ -185,28 +216,20 @@ function buildEvolveBonusLines(source: ISkillDescSource): string[] {
apTotal += evo.ap_bonus ?? 0;
hpTotal += evo.hp_bonus ?? 0;
}
- const lines: string[] = [];
- if (apTotal !== 0) lines.push(`成长:额外+${apTotal}${ATTR_NAME[Attrs.ap] ?? "攻击力"}`);
- if (hpTotal !== 0) lines.push(`成长:额外+${hpTotal}${ATTR_NAME[Attrs.hp_max] ?? "最大生命"}`);
+ const lines: ISkillLine[] = [];
+ if (apTotal !== 0) lines.push({ prefix: "成长:额外", value: `+${apTotal}`, suffix: ATTR_NAME[Attrs.ap] ?? "攻击力" });
+ if (hpTotal !== 0) lines.push({ prefix: "成长:额外", value: `+${hpTotal}`, suffix: ATTR_NAME[Attrs.hp_max] ?? "最大生命" });
return lines;
}
/**
- * 将英雄的触发技能/能力配置转换为标准可读描述文本
- *
- * 处理流程:
- * 1. 遍历 6 种标准触发技能,查 SkillSet + mergeSkillParams + SkillDescSet 拼行。
- * 2. 处理 field(驻场光环):读 FieldSkillSet 的 type+value 结构化配置。
- * 3. 处理 revive(复活):体现复活次数与回血百分比。
- * 4. 处理 evolve 额外属性加成(ap_bonus/hp_bonus)累计文案。
- *
- * @param source 触发技能数据源(heroInfo 静态配置 或 HeroAttrsComp 运行时当前等级配置)
- * @returns 多行描述文本,每行一条能力,用 \n 分隔
+ * 构建全部能力结构化行(触发技能 + 驻场光环 + 复活 + evolve 加成)。
+ * 纯文本与富文本两个公开接口共用此结果,仅渲染阶段不同。
*/
-export function buildSkillDesc(source: ISkillDescSource): string {
- const lines: string[] = [];
+function buildSkillLines(source: ISkillDescSource): ISkillLine[] {
+ const lines: ISkillLine[] = [];
- // ---- 第一步:6 种标准触发技能 ----
+ // ---- 6 种标准触发技能 ----
for (const key of TRIGGER_KEYS) {
const arr = source[key] as { s_uuid: number; t_num: number; overrides?: SkillOverrides }[] | undefined;
if (!arr?.length) continue;
@@ -216,26 +239,50 @@ export function buildSkillDesc(source: ISkillDescSource): string {
if (!base) continue;
const skill = mergeSkillParams(base, item.overrides);
const trigger = tpl.replace("n", String(item.t_num));
- lines.push(`${trigger}:${base.name} ${buildEffectDesc(skill)}`);
+ lines.push(buildEffectLine(`${trigger}:${base.name} `, skill));
}
}
- // ---- 第二步:驻场光环(field)----
+ // ---- 驻场光环(field):读 FieldSkillSet 结构化 info,不抽数值 ----
const fieldUuids = source[SkillTriggerType.Field] as number[] | undefined;
if (fieldUuids?.length) {
const tpl = SkillTriggerDesc[SkillTriggerType.Field] ?? "场上存活";
for (const uuid of fieldUuids) {
const fs = FieldSkillSet[uuid];
- if (fs) lines.push(`${tpl}:${fs.name} ${fs.info}`);
+ if (fs) lines.push({ prefix: `${tpl}:${fs.name} ${fs.info}`, value: "", suffix: "" });
}
}
- // ---- 第三步:复活(revive)----
- const reviveLine = buildReviveDesc(source);
+ // ---- 复活(revive)----
+ const reviveLine = buildReviveLine(source);
if (reviveLine) lines.push(reviveLine);
- // ---- 第四步:evolve 额外属性加成(ap/hp)----
+ // ---- evolve 额外属性加成(ap/hp)----
lines.push(...buildEvolveBonusLines(source));
- return lines.join("\n");
+ return lines;
+}
+
+/**
+ * 纯文本描述(Label 用):数值无颜色。
+ * @param source 触发技能数据源(heroInfo 静态配置 或 HeroAttrsComp 运行时当前等级配置)
+ * @returns 多行纯文本,每行一条能力,用 \n 分隔
+ */
+export function buildSkillDesc(source: ISkillDescSource): string {
+ return buildSkillLines(source)
+ .map(l => `${l.prefix}${l.value}${l.suffix}`)
+ .join("\n");
+}
+
+/**
+ * 富文本描述(RichText 用,BBCode):数值用 高亮。
+ * @param source 触发技能数据源(同 buildSkillDesc)
+ * @returns 多行富文本串,数值片段包裹 ,用 \n 分隔
+ */
+export function buildSkillDescRich(source: ISkillDescSource): string {
+ return buildSkillLines(source)
+ .map(l => l.value
+ ? `${l.prefix}${l.value}${l.suffix}`
+ : `${l.prefix}${l.suffix}`)
+ .join("\n");
}
diff --git a/assets/script/game/map/HeroBoxComp.ts b/assets/script/game/map/HeroBoxComp.ts
index 26e6824f..831e3460 100644
--- a/assets/script/game/map/HeroBoxComp.ts
+++ b/assets/script/game/map/HeroBoxComp.ts
@@ -12,7 +12,7 @@
* - HeroInfo(heroSet)—— 英雄静态配置
*/
import { mLogger } from "../common/Logger";
-import { _decorator, Node, Sprite, Label, resources, AnimationClip, SpriteFrame, NodeEventType, UITransform, Tween, tween, Vec3 } from "cc";
+import { _decorator, Node, Sprite, Label, RichText, resources, AnimationClip, SpriteFrame, NodeEventType, UITransform, Tween, tween, Vec3 } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { oops } from "db://oops-framework/core/Oops";
@@ -20,7 +20,7 @@ import { GameEvent } from "../common/config/GameEvent";
import { HeroInfo } from "../common/config/heroSet";
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
import { getLvColor } from "../common/config/GameSet";
-import { buildSkillDesc } from "../common/config/HeroSkillDesc";
+import { buildSkillDescRich } from "../common/config/HeroSkillDesc";
const { ccclass, property } = _decorator;
@@ -53,9 +53,11 @@ export class HeroBoxComp extends CCComp {
@property(Node)
private noHero: Node = null;
- /** 技能描述标签(多行,展示当前等级触发技能) */
- @property(Label)
- private skill_label: Label = null;
+ /** 技能描述富文本(多行,展示当前等级触发技能,数值高亮) */
+ @property(RichText)
+ private skill_label: RichText = null;
+ /** 技能描述富文本内容缓存(避免 refresh 降频内重复重解析排版) */
+ private skillDescCache: string = "";
// ======================== 战斗信息标签(总值 + 附加值) ========================
@@ -329,6 +331,7 @@ export class HeroBoxComp extends CCComp {
if (this.skill_label && this.skill_label.isValid) {
this.skill_label.string = "";
}
+ this.skillDescCache = "";
}
/**
@@ -396,9 +399,14 @@ export class HeroBoxComp extends CCComp {
const finalCritDmg = this.model.getFinalCritDamage();
this.setStatRow(this.crit_dmg_all_label, this.crit_dmg_plus_label, finalCritDmg, finalCritDmg - (this.model.crit_damage ?? 0), "%");
- // ---- 技能描述(当前等级触发技能,读运行时 model 最终配置) ----
+ // ---- 技能描述(当前等级触发技能,读运行时 model 最终配置;数值富文本高亮) ----
if (this.skill_label && this.skill_label.isValid) {
- this.skill_label.string = buildSkillDesc(this.model);
+ // 缓存未变则跳过重设,避免 refresh 降频内 RichText 重复重解析排版
+ const desc = buildSkillDescRich(this.model);
+ if (desc !== this.skillDescCache) {
+ this.skillDescCache = desc;
+ this.skill_label.string = desc;
+ }
}
// ---- 图标(UUID 变化时重新加载首帧动画) ----