ui: add library detail navigation

This commit is contained in:
daixiawu 2026-06-26 16:28:20 +08:00
parent 4d2f9d02b1
commit 916d32a9fd
5 changed files with 747 additions and 17 deletions

View File

@ -277,6 +277,147 @@ RectTransform:
m_AnchoredPosition: {x: -314, y: 9.3185}
m_SizeDelta: {x: 1004.5613, y: 1061.363}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &918102834489065526
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2577484829840513288}
- component: {fileID: 1317371316137663988}
- component: {fileID: 8999485641059638351}
- component: {fileID: 1152015509654120246}
- component: {fileID: 4959620602559763608}
m_Layer: 5
m_Name: RightButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2577484829840513288
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 918102834489065526}
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: 5456175472169021449}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -42, y: -538}
m_SizeDelta: {x: 80.679, y: 69.8417}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1317371316137663988
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 918102834489065526}
m_CullTransparentMesh: 1
--- !u!114 &8999485641059638351
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 918102834489065526}
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: 0.5482378, g: 0.5701192, b: 0.7264151, 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: e792f21cc8d99a44a8cd70b5e978ebe9, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1152015509654120246
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 918102834489065526}
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: 8999485641059638351}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &4959620602559763608
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 918102834489065526}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 1
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &1151308228730488792
GameObject:
m_ObjectHideFlags: 0
@ -1460,6 +1601,8 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2577484829840513288}
- {fileID: 3074288700172047835}
- {fileID: 549979974054988491}
- {fileID: 6031293868694483027}
- {fileID: 2511047359023480271}
@ -1634,6 +1777,147 @@ MonoBehaviour:
TextComponent: {fileID: 6429427462853229493}
TextLayoutElement: {fileID: 5886761419149737667}
MaxWidth: 450
--- !u!1 &6042960819317847602
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3074288700172047835}
- component: {fileID: 7128694608437847347}
- component: {fileID: 7094391175356381431}
- component: {fileID: 2565586077581861900}
- component: {fileID: 790838388294242618}
m_Layer: 5
m_Name: LeftButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3074288700172047835
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6042960819317847602}
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: 1
m_Children: []
m_Father: {fileID: 5456175472169021449}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -1063, y: -538}
m_SizeDelta: {x: 80.679, y: 69.8417}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7128694608437847347
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6042960819317847602}
m_CullTransparentMesh: 1
--- !u!114 &7094391175356381431
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6042960819317847602}
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: 0.5482378, g: 0.5701192, b: 0.7264151, 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: e792f21cc8d99a44a8cd70b5e978ebe9, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &2565586077581861900
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6042960819317847602}
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: 7094391175356381431}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &790838388294242618
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6042960819317847602}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 1
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &6614534362706645069
GameObject:
m_ObjectHideFlags: 0
@ -2861,7 +3145,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_AnchoredPosition.y
value: -158.65
value: -303.675
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -3010,7 +3294,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_AnchoredPosition.y
value: -101.19
value: -188.205
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -3159,7 +3443,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_AnchoredPosition.y
value: -43.73
value: -72.735
objectReference: {fileID: 0}
- target: {fileID: 422417801502647100, guid: e880e5b986f49d242911f0320df9536d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -619,6 +619,147 @@ MonoBehaviour:
LineSpacing: 0
ApplyParagraphSpacing: 0
ParagraphSpacing: 0
--- !u!1 &2412010256709687776
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8252887262776559937}
- component: {fileID: 955262469484599030}
- component: {fileID: 1438387821585482660}
- component: {fileID: 5884594095195420675}
- component: {fileID: 8169418161956303844}
m_Layer: 5
m_Name: RightButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8252887262776559937
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2412010256709687776}
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: 5456175472169021449}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -42, y: -538}
m_SizeDelta: {x: 80.679, y: 69.8417}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &955262469484599030
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2412010256709687776}
m_CullTransparentMesh: 1
--- !u!114 &1438387821585482660
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2412010256709687776}
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: 0.5482378, g: 0.5701192, b: 0.7264151, 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: e792f21cc8d99a44a8cd70b5e978ebe9, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5884594095195420675
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2412010256709687776}
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: 1438387821585482660}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &8169418161956303844
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2412010256709687776}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 1
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &2614352049566132002
GameObject:
m_ObjectHideFlags: 0
@ -1162,6 +1303,8 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3171209834237849666}
- {fileID: 8252887262776559937}
- {fileID: 549979974054988491}
- {fileID: 6031293868694483027}
- {fileID: 2511047359023480271}
@ -1201,6 +1344,147 @@ MonoBehaviour:
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &6065588967649207691
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3171209834237849666}
- component: {fileID: 7170816441254712393}
- component: {fileID: 3822858603219196326}
- component: {fileID: 5967234766360477867}
- component: {fileID: 2683725550812991235}
m_Layer: 5
m_Name: LeftButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3171209834237849666
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6065588967649207691}
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: 1
m_Children: []
m_Father: {fileID: 5456175472169021449}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -1063, y: -538}
m_SizeDelta: {x: 80.679, y: 69.8417}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7170816441254712393
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6065588967649207691}
m_CullTransparentMesh: 1
--- !u!114 &3822858603219196326
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6065588967649207691}
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: 0.5482378, g: 0.5701192, b: 0.7264151, 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: e792f21cc8d99a44a8cd70b5e978ebe9, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5967234766360477867
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6065588967649207691}
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: 3822858603219196326}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &2683725550812991235
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6065588967649207691}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 1
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &6614534362706645069
GameObject:
m_ObjectHideFlags: 0

View File

@ -25,6 +25,8 @@ namespace TH1_UI.View.Outside
public List<UIOutsideLibraryAchieveItemMono> AchieveItems;
public Button CloseButton;
public Button LeftButton;
public Button RightButton;
public AnimancerComponent Animancer;
@ -34,14 +36,14 @@ namespace TH1_UI.View.Outside
}
public void SetContent(GiantType giantType)
public bool SetContent(GiantType giantType)
{
if (!ContentGate.CanShowHeroIntroduction(giantType)) return;
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByGiant(giantType, out var info)) return;
if (!ContentGate.CanShowHeroIntroduction(giantType)) return false;
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByGiant(giantType, out var info)) return false;
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(new UnitFullType(UnitType.Giant, giantType, 1),
out var unitInfo)) return;
out var unitInfo)) return false;
var empire = unitInfo.GiantEmpire;
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(empire, out var playerInfo)) return;
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(empire, out var playerInfo)) return false;
SetUITextOrRaw(TopTitle,info.Name);
Illustration.sprite = info.Illust;
@ -58,9 +60,49 @@ namespace TH1_UI.View.Outside
CloseButton.onClick.RemoveAllListeners();
CloseButton.onClick.AddListener(Hide);
return true;
}
public void SetNavigationButtons(bool canMoveLeft, bool canMoveRight, Action onLeftClick, Action onRightClick)
{
EnsureNavigationButtons();
SetNavigationButton(LeftButton, canMoveLeft, onLeftClick);
SetNavigationButton(RightButton, canMoveRight, onRightClick);
}
private void EnsureNavigationButtons()
{
if (LeftButton == null)
{
LeftButton = FindNavigationButton("LeftButton");
}
if (RightButton == null)
{
RightButton = FindNavigationButton("RightButton");
}
}
private Button FindNavigationButton(string buttonName)
{
var buttons = GetComponentsInChildren<Button>(true);
for (int i = 0; i < buttons.Length; i++)
{
if (buttons[i] != null && buttons[i].name == buttonName) return buttons[i];
}
return null;
}
private static void SetNavigationButton(Button button, bool active, Action onClick)
{
if (button == null) return;
button.gameObject.SetActive(active);
button.onClick.RemoveAllListeners();
if (active && onClick != null) button.onClick.AddListener(() => onClick.Invoke());
}
private static void SetUITextOrRaw(TextMeshProUGUI text, string value)
{
if (text == null) return;

View File

@ -73,6 +73,9 @@ namespace TH1_UI.View.Outside
private List<UIOutsideLibraryGridItemMono> _heroMonoList;
private List<UIOutsideLibraryGridItemMono> _wonderMonoList;
private List<UIOutsideLibraryMusicItemMono> _musicMonoList;
private const int LibraryWonderCountPerEmpire = 7;
private int _currentHeroIndex = -1;
private int _currentWonderIndex = -1;
public UIOutsideLibraryHeroPanelMono HeroPanel;
@ -201,16 +204,36 @@ namespace TH1_UI.View.Outside
private void OnClickHeroItem(GiantType giantType)
{
if (!ContentGate.CanShowHeroIntroduction(giantType)) return;
HeroPanel.SetContent(giantType);
int index = _heroTypeList.IndexOf(giantType);
ShowHeroPanelAtIndex(index);
}
private void ShowHeroPanelAtIndex(int index)
{
if (HeroPanel == null) return;
if (index < 0 || index >= _heroTypeList.Count) return;
if (!HeroPanel.SetContent(_heroTypeList[index])) return;
_currentHeroIndex = index;
HeroPanel.SetNavigationButtons(index > 0, index < _heroTypeList.Count - 1, ShowPreviousHeroPanel, ShowNextHeroPanel);
HeroPanel.Show();
}
private void ShowPreviousHeroPanel()
{
ShowHeroPanelAtIndex(_currentHeroIndex - 1);
}
private void ShowNextHeroPanel()
{
ShowHeroPanelAtIndex(_currentHeroIndex + 1);
}
private void InitWonderList()
{
RebuildLibraryContentLists();
//Step #1 判断容器是否够
int wonderSum = _empireList.Count * 7 ;
int wonderSum = _empireList.Count * LibraryWonderCountPerEmpire ;
while (_wonderMonoList.Count < wonderSum)
{
var obj = Instantiate(GridItemPrefab, WonderListContent);
@ -222,8 +245,8 @@ namespace TH1_UI.View.Outside
for (int i = 0; i < _wonderMonoList.Count; i++)
{
_wonderMonoList[i].gameObject.SetActive(i < wonderSum);
int empireIdx = i / 7;
int wonderIdx = i % 7 + 1;
int empireIdx = i / LibraryWonderCountPerEmpire;
int wonderIdx = i % LibraryWonderCountPerEmpire + 1;
if (i >= wonderSum) break;
_wonderMonoList[i].SetWonderContent(_empireList[empireIdx], (WonderTypeEnum)wonderIdx,OnClickWonderItem);
}
@ -231,10 +254,65 @@ namespace TH1_UI.View.Outside
private void OnClickWonderItem(Empire empire,WonderTypeEnum wonderType)
{
WonderPanel.SetContent(empire,wonderType);
ShowWonderPanelAtIndex(GetWonderListIndex(empire, wonderType));
}
private void ShowWonderPanelAtIndex(int index)
{
if (WonderPanel == null) return;
if (!TryGetWonderEntryByIndex(index, out var empire, out var wonderType)) return;
if (!WonderPanel.SetContent(empire,wonderType)) return;
_currentWonderIndex = index;
int wonderCount = GetWonderListCount();
WonderPanel.SetNavigationButtons(index > 0, index < wonderCount - 1, ShowPreviousWonderPanel, ShowNextWonderPanel);
WonderPanel.Show();
}
private void ShowPreviousWonderPanel()
{
ShowWonderPanelAtIndex(_currentWonderIndex - 1);
}
private void ShowNextWonderPanel()
{
ShowWonderPanelAtIndex(_currentWonderIndex + 1);
}
private int GetWonderListIndex(Empire empire, WonderTypeEnum wonderType)
{
int empireIdx = _empireList.FindIndex(item => item == empire);
int wonderIdx = GetLibraryWonderIndex(wonderType);
if (empireIdx < 0 || wonderIdx < 0) return -1;
return empireIdx * LibraryWonderCountPerEmpire + wonderIdx;
}
private bool TryGetWonderEntryByIndex(int index, out Empire empire, out WonderTypeEnum wonderType)
{
empire = default;
wonderType = WonderTypeEnum.None;
if (index < 0 || index >= GetWonderListCount()) return false;
int empireIdx = index / LibraryWonderCountPerEmpire;
int wonderIdx = index % LibraryWonderCountPerEmpire;
if (empireIdx < 0 || empireIdx >= _empireList.Count) return false;
empire = _empireList[empireIdx];
wonderType = (WonderTypeEnum)(wonderIdx + 1);
return true;
}
private int GetWonderListCount()
{
return _empireList.Count * LibraryWonderCountPerEmpire;
}
private static int GetLibraryWonderIndex(WonderTypeEnum wonderType)
{
int wonderIdx = (int)wonderType - 1;
return wonderIdx >= 0 && wonderIdx < LibraryWonderCountPerEmpire ? wonderIdx : -1;
}
private void RebuildLibraryContentLists()
{
_heroTypeList.Clear();

View File

@ -24,6 +24,8 @@ namespace TH1_UI.View.Outside
public List<UIOutsideLibraryAchieveItemMono> AchieveItems;
public Button CloseButton;
public Button LeftButton;
public Button RightButton;
public AnimancerComponent Animancer;
@ -33,11 +35,11 @@ namespace TH1_UI.View.Outside
}
public void SetContent(Empire empire,WonderTypeEnum wonderType)
public bool SetContent(Empire empire,WonderTypeEnum wonderType)
{
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByWonder(empire, wonderType,out var info)) return;
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(empire, out var playerInfo)) return;
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByWonder(empire, wonderType,out var info)) return false;
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(empire, out var playerInfo)) return false;
var groundSprite = Table.Instance.GridAndResourceDataAssets.GetGroundSprite(empire.Civ, GridSpType.None);
var wonderSprite = Table.Instance.GridAndResourceDataAssets.GetWonderSprite( empire,wonderType);
MultilingualManager.Instance.SetUIText(TopTitle,info.Name);
@ -55,8 +57,48 @@ namespace TH1_UI.View.Outside
CloseButton.onClick.RemoveAllListeners();
CloseButton.onClick.AddListener(Hide);
return true;
}
public void SetNavigationButtons(bool canMoveLeft, bool canMoveRight, Action onLeftClick, Action onRightClick)
{
EnsureNavigationButtons();
SetNavigationButton(LeftButton, canMoveLeft, onLeftClick);
SetNavigationButton(RightButton, canMoveRight, onRightClick);
}
private void EnsureNavigationButtons()
{
if (LeftButton == null)
{
LeftButton = FindNavigationButton("LeftButton");
}
if (RightButton == null)
{
RightButton = FindNavigationButton("RightButton");
}
}
private Button FindNavigationButton(string buttonName)
{
var buttons = GetComponentsInChildren<Button>(true);
for (int i = 0; i < buttons.Length; i++)
{
if (buttons[i] != null && buttons[i].name == buttonName) return buttons[i];
}
return null;
}
private static void SetNavigationButton(Button button, bool active, Action onClick)
{
if (button == null) return;
button.gameObject.SetActive(active);
button.onClick.RemoveAllListeners();
if (active && onClick != null) button.onClick.AddListener(() => onClick.Invoke());
}
private void SetAchieveItems(Empire empire ,WonderTypeEnum wonderType)
{