百科bug修复
This commit is contained in:
parent
3783e5395a
commit
f8a167ad3c
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nextId": 73,
|
"nextId": 74,
|
||||||
"bugs": [
|
"bugs": [
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
@ -710,6 +710,16 @@
|
|||||||
"module": "",
|
"module": "",
|
||||||
"createdAt": 1777718940367,
|
"createdAt": 1777718940367,
|
||||||
"updatedAt": 1777718940367
|
"updatedAt": 1777718940367
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 73,
|
||||||
|
"title": "背盟状态优化一下!",
|
||||||
|
"description": "",
|
||||||
|
"status": "open",
|
||||||
|
"priority": "medium",
|
||||||
|
"module": "",
|
||||||
|
"createdAt": 1777737738169,
|
||||||
|
"updatedAt": 1777737738169
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -3,7 +3,7 @@ guid: b86c5e194ac9d974cb373f767feced21
|
|||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 12
|
serializedVersion: 13
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 0
|
enableMipMap: 0
|
||||||
@ -72,7 +72,7 @@ TextureImporter:
|
|||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 2
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
@ -82,19 +82,6 @@ TextureImporter:
|
|||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
buildTarget: Standalone
|
buildTarget: Standalone
|
||||||
maxTextureSize: 1024
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: 10
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 80
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 1
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Server
|
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
|
|||||||
@ -3316,72 +3316,6 @@ MonoBehaviour:
|
|||||||
NoNeedTech: 0
|
NoNeedTech: 0
|
||||||
SpriteSize: {x: 120, y: 120}
|
SpriteSize: {x: 120, y: 120}
|
||||||
SpritePos: {x: 0, y: 20}
|
SpritePos: {x: 0, y: 20}
|
||||||
- ActionId:
|
|
||||||
ActionType: 6
|
|
||||||
WonderType: 0
|
|
||||||
ResourceType: 0
|
|
||||||
FeatureType: 0
|
|
||||||
TerrainType: 0
|
|
||||||
UnitType: 0
|
|
||||||
GiantType: 0
|
|
||||||
UnitLevel: 0
|
|
||||||
Vegetation: 0
|
|
||||||
UnitActionType: 8
|
|
||||||
CityLevelUpActionType: 0
|
|
||||||
GridMiscActionType: 0
|
|
||||||
SkillType: 0
|
|
||||||
TechType: 0
|
|
||||||
PlayerActionType: 0
|
|
||||||
AIParamType: 0
|
|
||||||
CultureCardType: 0
|
|
||||||
ActionName: "\u7687\u5BB6\u70C8\u7130"
|
|
||||||
Desc: "\u5BF9\u5468\u56F41\u683C\u5355\u4F4D\u5185\u7684\u76EE\u6807\u9020\u6210\u9AD8\u989D\u4F24\u5BB3\uFF0C\u5BF9\u5468\u56F42\u683C\u8303\u56F4\u7684\u5355\u4F4D\u9020\u6210\u6E85\u5C04\u4F24\u5BB3\u3002"
|
|
||||||
NeedTechDesc: 0
|
|
||||||
TechDesc:
|
|
||||||
NeedLockDesc: 0
|
|
||||||
LockDesc:
|
|
||||||
Icon: {fileID: 21300000, guid: 7f9bbece8534c1748ae0c25bd347f09e, type: 3}
|
|
||||||
IconViewSizeType: 0
|
|
||||||
VarientIcon: 0
|
|
||||||
IconList: []
|
|
||||||
Cost: 0
|
|
||||||
CityExp: 0
|
|
||||||
NoNeedTech: 1
|
|
||||||
SpriteSize: {x: 0, y: 0}
|
|
||||||
SpritePos: {x: 0, y: 0}
|
|
||||||
- ActionId:
|
|
||||||
ActionType: 6
|
|
||||||
WonderType: 0
|
|
||||||
ResourceType: 0
|
|
||||||
FeatureType: 0
|
|
||||||
TerrainType: 0
|
|
||||||
UnitType: 0
|
|
||||||
GiantType: 0
|
|
||||||
UnitLevel: 0
|
|
||||||
Vegetation: 0
|
|
||||||
UnitActionType: 9
|
|
||||||
CityLevelUpActionType: 0
|
|
||||||
GridMiscActionType: 0
|
|
||||||
SkillType: 0
|
|
||||||
TechType: 0
|
|
||||||
PlayerActionType: 0
|
|
||||||
AIParamType: 0
|
|
||||||
CultureCardType: 0
|
|
||||||
ActionName: "\u7687\u5BB6\u70C8\u7130+"
|
|
||||||
Desc: "\u5BF9\u5468\u56F41\u683C\u5355\u4F4D\u5185\u7684\u76EE\u6807\u9020\u6210\u9AD8\u989D\u4F24\u5BB3\uFF0C\u5BF9\u5468\u56F43\u683C\u8303\u56F4\u7684\u5355\u4F4D\u9020\u6210\u6E85\u5C04\u4F24\u5BB3\u3002"
|
|
||||||
NeedTechDesc: 0
|
|
||||||
TechDesc:
|
|
||||||
NeedLockDesc: 0
|
|
||||||
LockDesc:
|
|
||||||
Icon: {fileID: 21300000, guid: 7f9bbece8534c1748ae0c25bd347f09e, type: 3}
|
|
||||||
IconViewSizeType: 0
|
|
||||||
VarientIcon: 0
|
|
||||||
IconList: []
|
|
||||||
Cost: 0
|
|
||||||
CityExp: 0
|
|
||||||
NoNeedTech: 1
|
|
||||||
SpriteSize: {x: 0, y: 0}
|
|
||||||
SpritePos: {x: 0, y: 0}
|
|
||||||
- ActionId:
|
- ActionId:
|
||||||
ActionType: 6
|
ActionType: 6
|
||||||
WonderType: 0
|
WonderType: 0
|
||||||
|
|||||||
@ -385,20 +385,6 @@ MonoBehaviour:
|
|||||||
ReserveLeaveCarry: 0
|
ReserveLeaveCarry: 0
|
||||||
ReserveGiantUpgrade: 0
|
ReserveGiantUpgrade: 0
|
||||||
ReserveCommonTransform: 0
|
ReserveCommonTransform: 0
|
||||||
- SkillType: 18
|
|
||||||
SkillViewType: 0
|
|
||||||
SkillName:
|
|
||||||
SkillDesc:
|
|
||||||
NotShow: 0
|
|
||||||
ShowOnUnitMono: 0
|
|
||||||
SkillIcon: {fileID: 0}
|
|
||||||
HasShowList: 0
|
|
||||||
SkillShowList: []
|
|
||||||
skillPriority: 0
|
|
||||||
ReserveOnCarry: 0
|
|
||||||
ReserveLeaveCarry: 0
|
|
||||||
ReserveGiantUpgrade: 0
|
|
||||||
ReserveCommonTransform: 0
|
|
||||||
- SkillType: 19
|
- SkillType: 19
|
||||||
SkillViewType: 0
|
SkillViewType: 0
|
||||||
SkillName: "\u79FB\u52A8\u6E85\u5C04"
|
SkillName: "\u79FB\u52A8\u6E85\u5C04"
|
||||||
@ -489,34 +475,6 @@ MonoBehaviour:
|
|||||||
ReserveLeaveCarry: 0
|
ReserveLeaveCarry: 0
|
||||||
ReserveGiantUpgrade: 0
|
ReserveGiantUpgrade: 0
|
||||||
ReserveCommonTransform: 0
|
ReserveCommonTransform: 0
|
||||||
- SkillType: 30
|
|
||||||
SkillViewType: 0
|
|
||||||
SkillName:
|
|
||||||
SkillDesc:
|
|
||||||
NotShow: 0
|
|
||||||
ShowOnUnitMono: 0
|
|
||||||
SkillIcon: {fileID: 0}
|
|
||||||
HasShowList: 0
|
|
||||||
SkillShowList: []
|
|
||||||
skillPriority: 0
|
|
||||||
ReserveOnCarry: 0
|
|
||||||
ReserveLeaveCarry: 0
|
|
||||||
ReserveGiantUpgrade: 0
|
|
||||||
ReserveCommonTransform: 0
|
|
||||||
- SkillType: 31
|
|
||||||
SkillViewType: 0
|
|
||||||
SkillName:
|
|
||||||
SkillDesc:
|
|
||||||
NotShow: 0
|
|
||||||
ShowOnUnitMono: 0
|
|
||||||
SkillIcon: {fileID: 0}
|
|
||||||
HasShowList: 0
|
|
||||||
SkillShowList: []
|
|
||||||
skillPriority: 0
|
|
||||||
ReserveOnCarry: 0
|
|
||||||
ReserveLeaveCarry: 0
|
|
||||||
ReserveGiantUpgrade: 0
|
|
||||||
ReserveCommonTransform: 0
|
|
||||||
- SkillType: 32
|
- SkillType: 32
|
||||||
SkillViewType: 1
|
SkillViewType: 1
|
||||||
SkillName: "\u82F1\u96C4\u5355\u4F4D"
|
SkillName: "\u82F1\u96C4\u5355\u4F4D"
|
||||||
@ -531,34 +489,6 @@ MonoBehaviour:
|
|||||||
ReserveLeaveCarry: 0
|
ReserveLeaveCarry: 0
|
||||||
ReserveGiantUpgrade: 0
|
ReserveGiantUpgrade: 0
|
||||||
ReserveCommonTransform: 0
|
ReserveCommonTransform: 0
|
||||||
- SkillType: 33
|
|
||||||
SkillViewType: 0
|
|
||||||
SkillName:
|
|
||||||
SkillDesc:
|
|
||||||
NotShow: 0
|
|
||||||
ShowOnUnitMono: 0
|
|
||||||
SkillIcon: {fileID: 0}
|
|
||||||
HasShowList: 0
|
|
||||||
SkillShowList: []
|
|
||||||
skillPriority: 0
|
|
||||||
ReserveOnCarry: 0
|
|
||||||
ReserveLeaveCarry: 0
|
|
||||||
ReserveGiantUpgrade: 0
|
|
||||||
ReserveCommonTransform: 0
|
|
||||||
- SkillType: 34
|
|
||||||
SkillViewType: 0
|
|
||||||
SkillName:
|
|
||||||
SkillDesc:
|
|
||||||
NotShow: 0
|
|
||||||
ShowOnUnitMono: 0
|
|
||||||
SkillIcon: {fileID: 0}
|
|
||||||
HasShowList: 0
|
|
||||||
SkillShowList: []
|
|
||||||
skillPriority: 0
|
|
||||||
ReserveOnCarry: 0
|
|
||||||
ReserveLeaveCarry: 0
|
|
||||||
ReserveGiantUpgrade: 0
|
|
||||||
ReserveCommonTransform: 0
|
|
||||||
- SkillType: 35
|
- SkillType: 35
|
||||||
SkillViewType: 0
|
SkillViewType: 0
|
||||||
SkillName: "\u57CE\u5E02\u4F20\u9001"
|
SkillName: "\u57CE\u5E02\u4F20\u9001"
|
||||||
|
|||||||
@ -587,6 +587,90 @@ MonoBehaviour:
|
|||||||
ID: 19528
|
ID: 19528
|
||||||
FontID: 0
|
FontID: 0
|
||||||
TextCfg: []
|
TextCfg: []
|
||||||
|
--- !u!1 &2166778125900124478
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6548214083712515793}
|
||||||
|
- component: {fileID: 8497522070587209775}
|
||||||
|
- component: {fileID: 5861299045258570600}
|
||||||
|
- component: {fileID: 5487321995839065240}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: GridGroup
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6548214083712515793
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2166778125900124478}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2960578512072476292}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 346.02704, y: -10}
|
||||||
|
m_SizeDelta: {x: 692.0541, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &8497522070587209775
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2166778125900124478}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &5861299045258570600
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2166778125900124478}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 0
|
||||||
|
m_VerticalFit: 2
|
||||||
|
--- !u!114 &5487321995839065240
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2166778125900124478}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 0
|
||||||
|
m_Bottom: 0
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_StartCorner: 0
|
||||||
|
m_StartAxis: 0
|
||||||
|
m_CellSize: {x: 140, y: 30}
|
||||||
|
m_Spacing: {x: 5, y: 0}
|
||||||
|
m_Constraint: 0
|
||||||
|
m_ConstraintCount: 2
|
||||||
--- !u!1 &2215917542491966575
|
--- !u!1 &2215917542491966575
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -626,6 +710,7 @@ RectTransform:
|
|||||||
- {fileID: 2674426050906365004}
|
- {fileID: 2674426050906365004}
|
||||||
- {fileID: 1016575307829893954}
|
- {fileID: 1016575307829893954}
|
||||||
- {fileID: 5192563354822985849}
|
- {fileID: 5192563354822985849}
|
||||||
|
- {fileID: 2960578512072476292}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
@ -689,7 +774,7 @@ MonoBehaviour:
|
|||||||
UnitInfoGroup: {fileID: 4834928516657227807}
|
UnitInfoGroup: {fileID: 4834928516657227807}
|
||||||
UnitSkillGroup: {fileID: 6669863128309909444}
|
UnitSkillGroup: {fileID: 6669863128309909444}
|
||||||
HeroUpgradeGroup: {fileID: 9101884546974498372}
|
HeroUpgradeGroup: {fileID: 9101884546974498372}
|
||||||
TechLockGroup: {fileID: 2337170077994540037}
|
CommonGridItemDescGroup: {fileID: 6909818060879782716}
|
||||||
TitleText: {fileID: 7965783891130610835}
|
TitleText: {fileID: 7965783891130610835}
|
||||||
DescText: {fileID: 8851566629389897434}
|
DescText: {fileID: 8851566629389897434}
|
||||||
UnitInfoAttackTxt: {fileID: 517234351961644657}
|
UnitInfoAttackTxt: {fileID: 517234351961644657}
|
||||||
@ -701,7 +786,8 @@ MonoBehaviour:
|
|||||||
SkillCircleArea: {fileID: 8664535126158727785}
|
SkillCircleArea: {fileID: 8664535126158727785}
|
||||||
SkillCirclePrefab: {fileID: 4360640776861055532, guid: 63ad2da40f8ceb74080c8f8a014d1bdc, type: 3}
|
SkillCirclePrefab: {fileID: 4360640776861055532, guid: 63ad2da40f8ceb74080c8f8a014d1bdc, type: 3}
|
||||||
HeroUpgradeDescText: {fileID: 4363202444080834106}
|
HeroUpgradeDescText: {fileID: 4363202444080834106}
|
||||||
TechLockDescText: {fileID: 770051044440875700}
|
GridGroup: {fileID: 6548214083712515793}
|
||||||
|
GridItemPrefab: {fileID: 1290847562389455671, guid: 5b3e30174d3d12a46a034556506a9c65, type: 3}
|
||||||
PlayerTechPoolGroup: {fileID: 58106919248076413}
|
PlayerTechPoolGroup: {fileID: 58106919248076413}
|
||||||
PlayerTechPoolLv1Text: {fileID: 5477750344117662252}
|
PlayerTechPoolLv1Text: {fileID: 5477750344117662252}
|
||||||
PlayerTechPoolLv2Text: {fileID: 7409200840167881465}
|
PlayerTechPoolLv2Text: {fileID: 7409200840167881465}
|
||||||
@ -2179,6 +2265,84 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_HorizontalFit: 0
|
m_HorizontalFit: 0
|
||||||
m_VerticalFit: 2
|
m_VerticalFit: 2
|
||||||
|
--- !u!1 &6909818060879782716
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2960578512072476292}
|
||||||
|
- component: {fileID: 8535708960623307618}
|
||||||
|
- component: {fileID: 4732812403384513881}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: CommonGridItemDesc
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &2960578512072476292
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6909818060879782716}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 6548214083712515793}
|
||||||
|
m_Father: {fileID: 7949361260912353484}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 358.655, y: -68.862}
|
||||||
|
m_SizeDelta: {x: 717.31, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &8535708960623307618
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6909818060879782716}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 10
|
||||||
|
m_Bottom: 10
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_Spacing: 5
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 0
|
||||||
|
m_ChildControlHeight: 0
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!114 &4732812403384513881
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6909818060879782716}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 0
|
||||||
|
m_VerticalFit: 2
|
||||||
--- !u!1 &7345957065528861176
|
--- !u!1 &7345957065528861176
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -0,0 +1,272 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3389767439914072609
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4352498928066414512}
|
||||||
|
- component: {fileID: 3528661208874349432}
|
||||||
|
- component: {fileID: 7266380939716781321}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4352498928066414512
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3389767439914072609}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2468592900116520049}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: -0.3777, y: 0}
|
||||||
|
m_SizeDelta: {x: 138.8032, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3528661208874349432
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3389767439914072609}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &7266380939716781321
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3389767439914072609}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: "\u79D1\u62801"
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 8e119f168f1a6b745be02ef19f51610f, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: -8081454072124122709, guid: 8e119f168f1a6b745be02ef19f51610f, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4286414205
|
||||||
|
m_fontColor: {r: 0.49056602, g: 0.49056602, b: 0.49056602, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 20
|
||||||
|
m_fontSizeBase: 20
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 24
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 1
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &5754249080142146628
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2468592900116520049}
|
||||||
|
- component: {fileID: 4629897242281628367}
|
||||||
|
- component: {fileID: 5670061094075235227}
|
||||||
|
- component: {fileID: 751107179801170817}
|
||||||
|
- component: {fileID: 1290847562389455671}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: UIOutsideWikiDescGroupGridItem
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2468592900116520049
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5754249080142146628}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 4352498928066414512}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4629897242281628367
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5754249080142146628}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &5670061094075235227
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5754249080142146628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: df39380aaef39404eaf3e0e9183c785c, type: 3}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 2.5
|
||||||
|
--- !u!114 &751107179801170817
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5754249080142146628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_WrapAround: 0
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 5670061094075235227}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!114 &1290847562389455671
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5754249080142146628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2b9e7c41a18d4f9ea6c3d5713f8a9c10, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Button: {fileID: 751107179801170817}
|
||||||
|
Text: {fileID: 7266380939716781321}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5b3e30174d3d12a46a034556506a9c65
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -38,8 +38,9 @@ namespace Logic
|
|||||||
_main = main;
|
_main = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回带后缀的 ForceName 显示文本。同 Empire (Civ+Force) 多个玩家时,按 PlayerDataList 顺序追加 " 1P"/" 2P"...
|
// 返回带后缀的 ForceName 显示文本。同 Empire (Civ+Force) 出现 ≥2 次时,
|
||||||
// 仅当 mapData.PlayerMap 中存在多名同 Empire 的 PlayerData 时才追加后缀;唯一 Empire 不变。
|
// 用该玩家在 PlayerDataList 中的全局位置 (1-based) 追加 " {idx}P"。
|
||||||
|
// 例:6 名玩家中第 4、第 6 是同阵营,则显示 "斯卡雷特帝国 4P" / "斯卡雷特帝国 6P"。
|
||||||
public static string GetDisplayForceName(MapData mapData, PlayerData player)
|
public static string GetDisplayForceName(MapData mapData, PlayerData player)
|
||||||
{
|
{
|
||||||
if (player == null) return string.Empty;
|
if (player == null) return string.Empty;
|
||||||
@ -47,16 +48,18 @@ namespace Logic
|
|||||||
var raw = MultilingualManager.Instance.GetMultilingualTextSafe(info.ForceName);
|
var raw = MultilingualManager.Instance.GetMultilingualTextSafe(info.ForceName);
|
||||||
if (mapData == null || mapData.PlayerMap == null) return raw;
|
if (mapData == null || mapData.PlayerMap == null) return raw;
|
||||||
|
|
||||||
|
var list = mapData.PlayerMap.PlayerDataList;
|
||||||
int sameCount = 0;
|
int sameCount = 0;
|
||||||
int orderIdx = 0;
|
int globalIdx = -1;
|
||||||
foreach (var p in mapData.PlayerMap.PlayerDataList)
|
for (int i = 0; i < list.Count; i++)
|
||||||
{
|
{
|
||||||
|
var p = list[i];
|
||||||
if (p.PlayerCivId != player.PlayerCivId || p.PlayerForceId != player.PlayerForceId) continue;
|
if (p.PlayerCivId != player.PlayerCivId || p.PlayerForceId != player.PlayerForceId) continue;
|
||||||
sameCount++;
|
sameCount++;
|
||||||
if (p.Id == player.Id) orderIdx = sameCount;
|
if (p.Id == player.Id) globalIdx = i + 1;
|
||||||
}
|
}
|
||||||
if (sameCount <= 1) return raw;
|
if (sameCount <= 1 || globalIdx < 0) return raw;
|
||||||
return $"{raw} {orderIdx}P";
|
return $"{raw} {globalIdx}P";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateWonder(MapData mapData, PlayerData player,WonderTypeEnum specificWonder = WonderTypeEnum.None)
|
public void UpdateWonder(MapData mapData, PlayerData player,WonderTypeEnum specificWonder = WonderTypeEnum.None)
|
||||||
|
|||||||
@ -76,6 +76,7 @@ namespace TH1_Logic.MatchConfig
|
|||||||
PlayerTechPool,//拥有科技池
|
PlayerTechPool,//拥有科技池
|
||||||
HasTechAtom,//拥有科技子条目
|
HasTechAtom,//拥有科技子条目
|
||||||
HasInitTechAtom,//拥有初始科技子条目
|
HasInitTechAtom,//拥有初始科技子条目
|
||||||
|
BelongTech,//科技子条目属于什么科技?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -25,15 +25,17 @@ public class UIOutsideMultiplayMemberRowMono : MonoBehaviour
|
|||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
private CivEnum _civ;
|
private CivEnum _civ;
|
||||||
private ForceEnum _force;
|
private ForceEnum _force;
|
||||||
|
private string _forceNameOverride;
|
||||||
public bool CheckParam()
|
public bool CheckParam()
|
||||||
{
|
{
|
||||||
return AvatarImage != null && NameText != null &&
|
return AvatarImage != null && NameText != null &&
|
||||||
ForcesText != null && StatusText != null; // && CivButton != null && ForcesButton != null;*/
|
ForcesText != null && StatusText != null; // && CivButton != null && ForcesButton != null;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetContent(MemberInfo info,string status,CivEnum civ,SteamLobbyManager lobby)
|
public void SetContent(MemberInfo info,string status,CivEnum civ,SteamLobbyManager lobby, string forceNameOverride = null)
|
||||||
{
|
{
|
||||||
if (!CheckParam()) return;
|
if (!CheckParam()) return;
|
||||||
|
_forceNameOverride = forceNameOverride;
|
||||||
NameText.text = info.Name;
|
NameText.text = info.Name;
|
||||||
var texture = info.Texture;
|
var texture = info.Texture;
|
||||||
_lobby = lobby;
|
_lobby = lobby;
|
||||||
@ -78,7 +80,10 @@ public class UIOutsideMultiplayMemberRowMono : MonoBehaviour
|
|||||||
_civ = civ;
|
_civ = civ;
|
||||||
_force = force;
|
_force = force;
|
||||||
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(_civ, _force, out var playerInfo)) return;
|
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(_civ, _force, out var playerInfo)) return;
|
||||||
MultilingualManager.Instance.SetUIText(ForcesText,playerInfo.ForceName);
|
if (!string.IsNullOrEmpty(_forceNameOverride))
|
||||||
|
ForcesText.text = _forceNameOverride;
|
||||||
|
else
|
||||||
|
MultilingualManager.Instance.SetUIText(ForcesText,playerInfo.ForceName);
|
||||||
LeaderImage.sprite = playerInfo.LeaderIllustration;
|
LeaderImage.sprite = playerInfo.LeaderIllustration;
|
||||||
//MultilingualManager.Instance.SetUIText(CivButtonText,playerInfo.CivName);
|
//MultilingualManager.Instance.SetUIText(CivButtonText,playerInfo.CivName);
|
||||||
//设置按钮颜色(和阵营一致)
|
//设置按钮颜色(和阵营一致)
|
||||||
|
|||||||
@ -307,9 +307,18 @@ namespace TH1_UI.View.Outside
|
|||||||
|
|
||||||
|
|
||||||
var memberList = _lobby.GetAllMemberInfo();
|
var memberList = _lobby.GetAllMemberInfo();
|
||||||
//Debug.Log("memberList count is " + memberList.Count);
|
var multiCivs = Main.Instance.MapConfig.MultiCivs;
|
||||||
|
// 按 MultiCivs 顺序渲染(与游戏内 PlayerDataList 中真人玩家顺序一致),
|
||||||
|
// 这样大厅显示的全局位置与进入游戏后的 nP 编号对齐。
|
||||||
|
// 不在 memberList 中的 MultiCiv 视为离线,跳过。
|
||||||
|
var orderedMemberCivs = new List<MemberCiv>();
|
||||||
|
foreach (var mc in multiCivs)
|
||||||
|
{
|
||||||
|
if (memberList.ContainsKey(mc.MemberId)) orderedMemberCivs.Add(mc);
|
||||||
|
}
|
||||||
|
|
||||||
//如果目前的list内对象不够,补足
|
//如果目前的list内对象不够,补足
|
||||||
while (_memberRowList.Count < memberList.Count)
|
while (_memberRowList.Count < orderedMemberCivs.Count)
|
||||||
{
|
{
|
||||||
var item = Instantiate(MemberRowPrefab,MemberList.transform);
|
var item = Instantiate(MemberRowPrefab,MemberList.transform);
|
||||||
//item.transform.localPosition = Vector3.zero;
|
//item.transform.localPosition = Vector3.zero;
|
||||||
@ -317,19 +326,43 @@ namespace TH1_UI.View.Outside
|
|||||||
_memberRowList.Add(cpn);
|
_memberRowList.Add(cpn);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < _memberRowList.Count; i++)
|
for (int i = 0; i < _memberRowList.Count; i++)
|
||||||
_memberRowList[i].gameObject.SetActive(i < memberList.Count);
|
_memberRowList[i].gameObject.SetActive(i < orderedMemberCivs.Count);
|
||||||
|
|
||||||
//设置真人玩家行
|
// 统计每个 (CivId,ForceId) 在已选择阵营的成员中的出现次数;
|
||||||
int ct = 0;
|
// 仅当 ≥2 时该位置的成员需要显示 nP 后缀。CivId==0 视为未选择,不参与统计。
|
||||||
foreach (var kv in memberList)
|
var sameCountDict = new Dictionary<(uint, uint), int>();
|
||||||
|
foreach (var mc in orderedMemberCivs)
|
||||||
{
|
{
|
||||||
var status = _lobby.GetLobbyOwnerId() == kv.Key
|
if (mc.CivId == 0) continue;
|
||||||
|
var key = (mc.CivId, mc.ForceId);
|
||||||
|
sameCountDict.TryGetValue(key, out var prevCnt);
|
||||||
|
sameCountDict[key] = prevCnt + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置真人玩家行
|
||||||
|
for (int idx = 0; idx < orderedMemberCivs.Count; idx++)
|
||||||
|
{
|
||||||
|
var mc = orderedMemberCivs[idx];
|
||||||
|
var info = memberList[mc.MemberId];
|
||||||
|
var status = _lobby.GetLobbyOwnerId() == mc.MemberId
|
||||||
? Table.Instance.TextDataAssets.OutsideMultiplayTitleHost
|
? Table.Instance.TextDataAssets.OutsideMultiplayTitleHost
|
||||||
: Table.Instance.TextDataAssets.OutsideMultiplayTitleGuest;
|
: Table.Instance.TextDataAssets.OutsideMultiplayTitleGuest;
|
||||||
uint civId = (Main.Instance.MapConfig.GetMemberCiv(kv.Value.Id)?.CivId) ?? 0;
|
var civ = Table.Instance.TransCivIdToCivEnum(mc.CivId);
|
||||||
var civ = Table.Instance.TransCivIdToCivEnum(civId);
|
var force = Table.Instance.TransForceIdToForceEnum(mc.ForceId);
|
||||||
_memberRowList[ct].SetContent(kv.Value, status, civ,_lobby);
|
|
||||||
ct++;
|
string forceNameOverride = null;
|
||||||
|
if (mc.CivId != 0 && sameCountDict.TryGetValue((mc.CivId, mc.ForceId), out var sameCnt) && sameCnt >= 2)
|
||||||
|
{
|
||||||
|
if (Table.Instance.PlayerDataAssets.GetPlayerInfo(civ, force, out var pi))
|
||||||
|
{
|
||||||
|
var raw = MultilingualManager.Instance.GetMultilingualTextSafe(pi.ForceName);
|
||||||
|
// 全局位置 = 该成员在 PlayerDataList 中的 1-based index = MultiCivs 中的 1-based index
|
||||||
|
int globalIdx = multiCivs.IndexOf(mc) + 1;
|
||||||
|
forceNameOverride = $"{raw} {globalIdx}P";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_memberRowList[idx].SetContent(info, status, civ, _lobby, forceNameOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Step #3 设置 是否继续上一个存档的toggle
|
//Step #3 设置 是否继续上一个存档的toggle
|
||||||
|
|||||||
@ -83,6 +83,7 @@ namespace TH1_UI.View.Outside
|
|||||||
ClearWikiList();
|
ClearWikiList();
|
||||||
ClearTitle();
|
ClearTitle();
|
||||||
InitCloseButtons();
|
InitCloseButtons();
|
||||||
|
WikiSub.WikiDescGroup.OnRequestWikiJump += HandleWikiJumpRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitCloseButtons()
|
private void InitCloseButtons()
|
||||||
@ -594,11 +595,153 @@ namespace TH1_UI.View.Outside
|
|||||||
|
|
||||||
protected override void OnDispose()
|
protected override void OnDispose()
|
||||||
{
|
{
|
||||||
|
WikiSub.WikiDescGroup.OnRequestWikiJump -= HandleWikiJumpRequest;
|
||||||
ClearBigSelectButtons();
|
ClearBigSelectButtons();
|
||||||
ClearSmallSelectButtons();
|
ClearSmallSelectButtons();
|
||||||
ClearWikiList();
|
ClearWikiList();
|
||||||
ClearDescArea();
|
ClearDescArea();
|
||||||
base.OnDispose();
|
base.OnDispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GridItem 点击跳转:在已有的 BigSelectGroups 内找一个能匹配 wikiId 对应 WikiItem.Types 的
|
||||||
|
// (Big, Small?) 组合,依次触发 BigSelectButton.click → SmallSelectButton.click → WikiList 选中。
|
||||||
|
// 找不到任何能容纳此 wikiId 的 group 就不切(按需求)。
|
||||||
|
private void HandleWikiJumpRequest(uint wikiId)
|
||||||
|
{
|
||||||
|
var wikiData = Table.Instance != null ? Table.Instance.WikiData : null;
|
||||||
|
if (wikiData == null) return;
|
||||||
|
var target = wikiData.GetById(wikiId);
|
||||||
|
if (target == null) return;
|
||||||
|
if (target.Types == null || target.Types.Count == 0) return;
|
||||||
|
|
||||||
|
if (!TryResolveJumpRoute(target, out var bigType, out var smallType, out var hasSmall)) return;
|
||||||
|
|
||||||
|
// 1) 触发 Big 按钮(SetSelected 视觉 + 通知 Controller 重建 Small)
|
||||||
|
var bigBtn = FindBigButton(bigType);
|
||||||
|
if (bigBtn == null || bigBtn.Button == null) return;
|
||||||
|
bigBtn.Button.onClick.Invoke();
|
||||||
|
|
||||||
|
// 2) 触发 Small 按钮(如果该 Big 下有 Small 子分类)
|
||||||
|
if (hasSmall)
|
||||||
|
{
|
||||||
|
var smallBtn = FindSmallButton(smallType);
|
||||||
|
if (smallBtn == null || smallBtn.Button == null) return;
|
||||||
|
smallBtn.Button.onClick.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3) 在已经刷新好的 _wikiListItems 里点中目标 wikiId,并把它滚到可视区
|
||||||
|
for (int i = 0; i < _wikiListItems.Count; i++)
|
||||||
|
{
|
||||||
|
var it = _wikiListItems[i];
|
||||||
|
if (it == null || it.Button == null) continue;
|
||||||
|
if (it.WikiItemId != wikiId) continue;
|
||||||
|
it.Button.onClick.Invoke();
|
||||||
|
ScrollWikiListItemIntoView(it);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 把指定的 WikiListItem 滚到 ScrollRect 的可视区中央。
|
||||||
|
// ScrollRect 没在 prefab 上单独 expose,运行时从 WikiListContent 沿父链找第一个。
|
||||||
|
// 注意:列表是 RefreshWikiList 后立刻调用此方法,需要先 ForceRebuildLayout 让 Content
|
||||||
|
// 的高度和子节点位置都已经确定,否则 anchoredPosition.y 可能还是 0。
|
||||||
|
private void ScrollWikiListItemIntoView(WikiListItem item)
|
||||||
|
{
|
||||||
|
if (item == null) return;
|
||||||
|
var content = WikiListContent as RectTransform;
|
||||||
|
if (content == null) return;
|
||||||
|
|
||||||
|
var scroll = FindParentScrollRect(content);
|
||||||
|
if (scroll == null) return;
|
||||||
|
var viewport = scroll.viewport != null ? scroll.viewport : content.parent as RectTransform;
|
||||||
|
if (viewport == null) return;
|
||||||
|
|
||||||
|
Canvas.ForceUpdateCanvases();
|
||||||
|
LayoutRebuilder.ForceRebuildLayoutImmediate(content);
|
||||||
|
|
||||||
|
var target = item.transform as RectTransform;
|
||||||
|
if (target == null) return;
|
||||||
|
|
||||||
|
float contentHeight = content.rect.height;
|
||||||
|
float viewportHeight = viewport.rect.height;
|
||||||
|
// Content 比 Viewport 矮的时候不需要滚
|
||||||
|
if (contentHeight <= viewportHeight) return;
|
||||||
|
|
||||||
|
// target 在 content 局部空间下的中心 Y(content pivot 默认是 (0.5,1),y 向下为负)
|
||||||
|
// 用 target.localPosition.y 即可(已是相对 content)
|
||||||
|
float targetY = -target.localPosition.y; // 转成"距 content 顶部"的正向距离
|
||||||
|
float scrollableRange = contentHeight - viewportHeight;
|
||||||
|
// verticalNormalizedPosition: 1 = 顶部,0 = 底部
|
||||||
|
// 让 target 中心对齐 viewport 中心:顶部需要让出 (targetY - viewportHeight/2)
|
||||||
|
float topOffset = Mathf.Clamp(targetY - viewportHeight * 0.5f, 0f, scrollableRange);
|
||||||
|
scroll.verticalNormalizedPosition = 1f - topOffset / scrollableRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ScrollRect FindParentScrollRect(Transform start)
|
||||||
|
{
|
||||||
|
var t = start;
|
||||||
|
while (t != null)
|
||||||
|
{
|
||||||
|
var sr = t.GetComponent<ScrollRect>();
|
||||||
|
if (sr != null) return sr;
|
||||||
|
t = t.parent;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryResolveJumpRoute(WikiItem target, out WikiType bigType, out WikiType smallType, out bool hasSmall)
|
||||||
|
{
|
||||||
|
bigType = default;
|
||||||
|
smallType = default;
|
||||||
|
hasSmall = false;
|
||||||
|
if (SelectGroups == null) return false;
|
||||||
|
|
||||||
|
// target.Types 的顺序里,BigType* 总是先于 SmallType*;遍历 SelectGroups 找可命中的组合
|
||||||
|
for (int g = 0; g < SelectGroups.Count; g++)
|
||||||
|
{
|
||||||
|
var grp = SelectGroups[g];
|
||||||
|
if (grp == null) continue;
|
||||||
|
if (!target.Types.Contains(grp.BigType)) continue;
|
||||||
|
|
||||||
|
if (grp.SmallTypes == null || grp.SmallTypes.Count == 0)
|
||||||
|
{
|
||||||
|
bigType = grp.BigType;
|
||||||
|
hasSmall = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int s = 0; s < grp.SmallTypes.Count; s++)
|
||||||
|
{
|
||||||
|
if (!target.Types.Contains(grp.SmallTypes[s])) continue;
|
||||||
|
bigType = grp.BigType;
|
||||||
|
smallType = grp.SmallTypes[s];
|
||||||
|
hasSmall = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private BigSelectButton FindBigButton(WikiType bigType)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _bigSelectButtons.Count; i++)
|
||||||
|
{
|
||||||
|
var b = _bigSelectButtons[i];
|
||||||
|
if (b == null) continue;
|
||||||
|
if (b.WikiType.Equals(bigType)) return b;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SmallSelectButton FindSmallButton(WikiType smallType)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _smallSelectButtons.Count; i++)
|
||||||
|
{
|
||||||
|
var b = _smallSelectButtons[i];
|
||||||
|
if (b == null) continue;
|
||||||
|
if (b.WikiType.Equals(smallType)) return b;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,47 @@
|
|||||||
|
using Logic.Multilingual;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace TH1_UI.View.Outside.WikiSub
|
||||||
|
{
|
||||||
|
// 通用 GridItem:CommonGridItemDesc/GridGroup 下的可点击条目
|
||||||
|
// 文本可以是多语言 key(数字字符串)或原始字符串;wikiId 用于点击后跳转。
|
||||||
|
// 当 wikiId == 0 时不发起跳转。
|
||||||
|
public class UIOutsideWikiDescGroupGridItemMono : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Button Button;
|
||||||
|
public TextMeshProUGUI Text;
|
||||||
|
|
||||||
|
public uint WikiId { get; private set; }
|
||||||
|
|
||||||
|
public void SetContent(string text, uint wikiId)
|
||||||
|
{
|
||||||
|
WikiId = wikiId;
|
||||||
|
|
||||||
|
if (Text != null)
|
||||||
|
{
|
||||||
|
var ml = Text.GetComponent<MultilingualTextMono>();
|
||||||
|
if (ml != null) ml.ID = 0;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(text) && uint.TryParse(text, out _))
|
||||||
|
MultilingualManager.Instance.SetUIText(Text, text);
|
||||||
|
else
|
||||||
|
Text.text = text ?? string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Button == null) Button = GetComponent<Button>();
|
||||||
|
if (Button != null)
|
||||||
|
{
|
||||||
|
Button.onClick.RemoveAllListeners();
|
||||||
|
Button.onClick.AddListener(HandleClick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleClick()
|
||||||
|
{
|
||||||
|
if (WikiId == 0) return;
|
||||||
|
WikiDescGroup.RequestWikiJump(WikiId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2b9e7c41a18d4f9ea6c3d5713f8a9c10
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Logic.Multilingual;
|
using Logic.Multilingual;
|
||||||
using Logic.Skill;
|
using Logic.Skill;
|
||||||
@ -12,13 +13,23 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
{
|
{
|
||||||
public class WikiDescGroup : MonoBehaviour
|
public class WikiDescGroup : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
// GridItem 点击跳转用:由子节点的 GridItem Mono 触发,WikiView 在 OnInit/OnDispose
|
||||||
|
// 订阅/退订即可。这里走 static 是因为 Wiki 同一时刻只会有一个 View,且子 GridItem
|
||||||
|
// 与 WikiView 隔了好几层,不想让每个 GridItem 都持有 View 引用。
|
||||||
|
public static event Action<uint> OnRequestWikiJump;
|
||||||
|
public static void RequestWikiJump(uint wikiId)
|
||||||
|
{
|
||||||
|
if (wikiId == 0) return;
|
||||||
|
OnRequestWikiJump?.Invoke(wikiId);
|
||||||
|
}
|
||||||
|
|
||||||
// 互斥的容器:根据 DescType 切换显示,由 SetContent 内部统一管理
|
// 互斥的容器:根据 DescType 切换显示,由 SetContent 内部统一管理
|
||||||
[Header("Containers")]
|
[Header("Containers")]
|
||||||
public GameObject BaseDescGroup;
|
public GameObject BaseDescGroup;
|
||||||
public GameObject UnitInfoGroup;
|
public GameObject UnitInfoGroup;
|
||||||
public GameObject UnitSkillGroup;
|
public GameObject UnitSkillGroup;
|
||||||
public GameObject HeroUpgradeGroup;
|
public GameObject HeroUpgradeGroup;
|
||||||
public GameObject TechLockGroup;
|
public GameObject CommonGridItemDescGroup;
|
||||||
|
|
||||||
// 普通文本模式
|
// 普通文本模式
|
||||||
[Header("Base Desc")]
|
[Header("Base Desc")]
|
||||||
@ -43,9 +54,11 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
[Header("HeroUpgrade")]
|
[Header("HeroUpgrade")]
|
||||||
public TextMeshProUGUI HeroUpgradeDescText;
|
public TextMeshProUGUI HeroUpgradeDescText;
|
||||||
|
|
||||||
// TechLock(解锁此 Action 的 TechAtom 名称,逗号拼接)
|
// CommonGridItemDesc:通用 Grid 列表,支持 TechLock 等场景。
|
||||||
[Header("TechLock")]
|
// 每个 desc 段会按需要 spawn 多个 GridItem 到 GridGroup 下。
|
||||||
public TextMeshProUGUI TechLockDescText;
|
[Header("CommonGridItemDesc")]
|
||||||
|
public Transform GridGroup;
|
||||||
|
public UIOutsideWikiDescGroupGridItemMono GridItemPrefab;
|
||||||
|
|
||||||
// PlayerTechPool(Force 拥有的 TechPool,按 CostLevel 1/2/3 拆 3 段)
|
// PlayerTechPool(Force 拥有的 TechPool,按 CostLevel 1/2/3 拆 3 段)
|
||||||
[Header("PlayerTechPool")]
|
[Header("PlayerTechPool")]
|
||||||
@ -57,6 +70,7 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
public WikiDescType DescType { get; private set; }
|
public WikiDescType DescType { get; private set; }
|
||||||
|
|
||||||
private readonly List<GameObject> _spawnedSkillCircles = new List<GameObject>();
|
private readonly List<GameObject> _spawnedSkillCircles = new List<GameObject>();
|
||||||
|
private readonly List<UIOutsideWikiDescGroupGridItemMono> _spawnedGridItems = new List<UIOutsideWikiDescGroupGridItemMono>();
|
||||||
|
|
||||||
// 返回 false 表示该 DescItem 在当前条目下没有可显示内容,调用方应销毁此 group。
|
// 返回 false 表示该 DescItem 在当前条目下没有可显示内容,调用方应销毁此 group。
|
||||||
public bool SetContent(WikiItem owner, DescItem descItem)
|
public bool SetContent(WikiItem owner, DescItem descItem)
|
||||||
@ -77,8 +91,9 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
SetActiveSafe(UnitInfoGroup, false);
|
SetActiveSafe(UnitInfoGroup, false);
|
||||||
SetActiveSafe(UnitSkillGroup, false);
|
SetActiveSafe(UnitSkillGroup, false);
|
||||||
SetActiveSafe(HeroUpgradeGroup, false);
|
SetActiveSafe(HeroUpgradeGroup, false);
|
||||||
SetActiveSafe(TechLockGroup, false);
|
SetActiveSafe(CommonGridItemDescGroup, false);
|
||||||
SetActiveSafe(PlayerTechPoolGroup, false);
|
SetActiveSafe(PlayerTechPoolGroup, false);
|
||||||
|
ClearGridItems();
|
||||||
|
|
||||||
switch (descItem.DescType)
|
switch (descItem.DescType)
|
||||||
{
|
{
|
||||||
@ -99,8 +114,8 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
SetActiveSafe(BaseDescGroup, true);
|
SetActiveSafe(BaseDescGroup, true);
|
||||||
return true;
|
return true;
|
||||||
case WikiDescType.TechLock:
|
case WikiDescType.TechLock:
|
||||||
SetActiveSafe(TechLockGroup, true);
|
if (!ApplyTechLock(owner)) return false;
|
||||||
ApplyTechLock(owner);
|
SetActiveSafe(CommonGridItemDescGroup, true);
|
||||||
return true;
|
return true;
|
||||||
case WikiDescType.PlayerTechPool:
|
case WikiDescType.PlayerTechPool:
|
||||||
if (!ApplyPlayerTechPool(owner)) return false;
|
if (!ApplyPlayerTechPool(owner)) return false;
|
||||||
@ -139,15 +154,15 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
if (TitleText != null) { ResetMultilingual(TitleText); TitleText.text = string.Empty; }
|
if (TitleText != null) { ResetMultilingual(TitleText); TitleText.text = string.Empty; }
|
||||||
if (DescText != null) { ResetMultilingual(DescText); DescText.text = string.Empty; }
|
if (DescText != null) { ResetMultilingual(DescText); DescText.text = string.Empty; }
|
||||||
if (HeroUpgradeDescText != null) { ResetMultilingual(HeroUpgradeDescText); HeroUpgradeDescText.text = string.Empty; }
|
if (HeroUpgradeDescText != null) { ResetMultilingual(HeroUpgradeDescText); HeroUpgradeDescText.text = string.Empty; }
|
||||||
if (TechLockDescText != null) { ResetMultilingual(TechLockDescText); TechLockDescText.text = string.Empty; }
|
|
||||||
if (PlayerTechPoolLv1Text != null) { ResetMultilingual(PlayerTechPoolLv1Text); PlayerTechPoolLv1Text.text = string.Empty; }
|
if (PlayerTechPoolLv1Text != null) { ResetMultilingual(PlayerTechPoolLv1Text); PlayerTechPoolLv1Text.text = string.Empty; }
|
||||||
if (PlayerTechPoolLv2Text != null) { ResetMultilingual(PlayerTechPoolLv2Text); PlayerTechPoolLv2Text.text = string.Empty; }
|
if (PlayerTechPoolLv2Text != null) { ResetMultilingual(PlayerTechPoolLv2Text); PlayerTechPoolLv2Text.text = string.Empty; }
|
||||||
if (PlayerTechPoolLv3Text != null) { ResetMultilingual(PlayerTechPoolLv3Text); PlayerTechPoolLv3Text.text = string.Empty; }
|
if (PlayerTechPoolLv3Text != null) { ResetMultilingual(PlayerTechPoolLv3Text); PlayerTechPoolLv3Text.text = string.Empty; }
|
||||||
ClearSkillCircles();
|
ClearSkillCircles();
|
||||||
|
ClearGridItems();
|
||||||
SetActiveSafe(UnitInfoGroup, false);
|
SetActiveSafe(UnitInfoGroup, false);
|
||||||
SetActiveSafe(UnitSkillGroup, false);
|
SetActiveSafe(UnitSkillGroup, false);
|
||||||
SetActiveSafe(HeroUpgradeGroup, false);
|
SetActiveSafe(HeroUpgradeGroup, false);
|
||||||
SetActiveSafe(TechLockGroup, false);
|
SetActiveSafe(CommonGridItemDescGroup, false);
|
||||||
SetActiveSafe(PlayerTechPoolGroup, false);
|
SetActiveSafe(PlayerTechPoolGroup, false);
|
||||||
SetActiveSafe(BaseDescGroup, true);
|
SetActiveSafe(BaseDescGroup, true);
|
||||||
}
|
}
|
||||||
@ -215,22 +230,23 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------- TechLock(解锁此 Action 的 TechAtom 名称列表) ----------
|
// ---------- TechLock(解锁此 Action 的 TechAtom,每个生成一个 GridItem) ----------
|
||||||
// 走自己的 TechLockGroup 容器,TechLockDescText 内容为:所有 EnableAction
|
// 走 CommonGridItemDescGroup/GridGroup:每个 EnableAction 且 TechActions 包含
|
||||||
// 且 TechActions 包含 owner.ActionId 的 TechAtom 的 TechAtomName 多语言文本,", " 拼接。
|
// owner.ActionId 的 TechAtom 都会 spawn 一个 GridItem,文字 = TechAtomName,
|
||||||
private void ApplyTechLock(WikiItem owner)
|
// 点击 wikiId = WikiId.Encode(WikiSource.TechAtom, TechAtom)。
|
||||||
|
// 没有任何匹配 atom 时返回 false,外层会销毁此 group。
|
||||||
|
private bool ApplyTechLock(WikiItem owner)
|
||||||
{
|
{
|
||||||
if (TechLockDescText == null) return;
|
ClearGridItems();
|
||||||
ResetMultilingual(TechLockDescText);
|
if (owner == null || owner.ActionId == null) return false;
|
||||||
TechLockDescText.text = string.Empty;
|
if (GridGroup == null || GridItemPrefab == null) return false;
|
||||||
|
|
||||||
if (owner == null || owner.ActionId == null) return;
|
|
||||||
var techAssets = Table.Instance?.TechDataAssets;
|
var techAssets = Table.Instance?.TechDataAssets;
|
||||||
if (techAssets == null) return;
|
if (techAssets == null) return false;
|
||||||
var atomList = techAssets.TechAtomList;
|
var atomList = techAssets.TechAtomList;
|
||||||
if (atomList == null) return;
|
if (atomList == null) return false;
|
||||||
|
|
||||||
var sb = new System.Text.StringBuilder();
|
int spawned = 0;
|
||||||
for (int i = 0; i < atomList.Count; i++)
|
for (int i = 0; i < atomList.Count; i++)
|
||||||
{
|
{
|
||||||
var atom = atomList[i];
|
var atom = atomList[i];
|
||||||
@ -249,18 +265,45 @@ namespace TH1_UI.View.Outside.WikiSub
|
|||||||
}
|
}
|
||||||
if (!match) continue;
|
if (!match) continue;
|
||||||
|
|
||||||
var key = atom.TechAtomName;
|
if (string.IsNullOrEmpty(atom.TechAtomName)) continue;
|
||||||
if (string.IsNullOrEmpty(key)) continue;
|
|
||||||
|
|
||||||
string text = key;
|
uint wikiId = WikiId.Encode(WikiSource.TechAtom, (uint)atom.TechAtom);
|
||||||
if (uint.TryParse(key, out _))
|
SpawnGridItem(atom.TechAtomName, wikiId);
|
||||||
text = MultilingualManager.Instance.GetMultilingualText(key);
|
spawned++;
|
||||||
if (string.IsNullOrEmpty(text)) continue;
|
}
|
||||||
|
return spawned > 0;
|
||||||
if (sb.Length > 0) sb.Append(", ");
|
}
|
||||||
sb.Append(text);
|
|
||||||
|
private void SpawnGridItem(string text, uint wikiId)
|
||||||
|
{
|
||||||
|
var item = Instantiate(GridItemPrefab, GridGroup);
|
||||||
|
item.transform.localScale = Vector3.one;
|
||||||
|
item.SetContent(text, wikiId);
|
||||||
|
_spawnedGridItems.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearGridItems()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _spawnedGridItems.Count; i++)
|
||||||
|
{
|
||||||
|
var it = _spawnedGridItems[i];
|
||||||
|
if (it == null) continue;
|
||||||
|
if (it.transform != null) it.transform.SetParent(null, false);
|
||||||
|
Destroy(it.gameObject);
|
||||||
|
}
|
||||||
|
_spawnedGridItems.Clear();
|
||||||
|
|
||||||
|
// GridGroup 内 prefab 自带的占位子节点也一并清掉,避免和运行时 spawn 的混在一起
|
||||||
|
if (GridGroup != null)
|
||||||
|
{
|
||||||
|
for (int i = GridGroup.childCount - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
var child = GridGroup.GetChild(i);
|
||||||
|
if (child == null) continue;
|
||||||
|
child.SetParent(null, false);
|
||||||
|
Destroy(child.gameObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
TechLockDescText.text = sb.ToString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------- PlayerTechPool(Force 拥有的 TechPool 按 CostLevel 拆 3 段) ----------
|
// ---------- PlayerTechPool(Force 拥有的 TechPool 按 CostLevel 拆 3 段) ----------
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user