메뉴 튜토리얼 완성

This commit is contained in:
NTG_Lenovo 2024-12-17 16:42:47 +09:00
parent 8df303afa1
commit bd8bed0cad
27 changed files with 2722 additions and 227 deletions

View File

@ -1252,11 +1252,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!224 &595339336 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6448125349934981781, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
m_PrefabInstance: {fileID: 8401317452346303361}
m_PrefabAsset: {fileID: 0}
--- !u!1 &652021011
GameObject:
m_ObjectHideFlags: 0
@ -2396,11 +2391,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1061695247072719575, guid: d4d2c09313763694785f13d2ff8c1303, type: 3}
m_PrefabInstance: {fileID: 285334972}
m_PrefabAsset: {fileID: 0}
--- !u!224 &1325306576 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
m_PrefabInstance: {fileID: 1401815268}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1363927973
PrefabInstance:
m_ObjectHideFlags: 0
@ -2526,103 +2516,6 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: fb1e288d64b813b4a9929ba9ece44956, type: 3}
--- !u!1001 &1401815268
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 595339336}
m_Modifications:
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_SizeDelta.x
value: 160
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_SizeDelta.y
value: 60
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchoredPosition.x
value: 80
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 544138656343027660, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6041565752754092942, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
propertyPath: m_Name
value: TutorialPageButton
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4f5ae3c4e3e2d014ab0c1f8336189c58, type: 3}
--- !u!1001 &1465657075
PrefabInstance:
m_ObjectHideFlags: 0
@ -4468,6 +4361,30 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 290108948241752577, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 414015556802972880, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4500,6 +4417,42 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 124.09
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 112.045
objectReference: {fileID: 0}
- target: {fileID: 782217958273666457, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 949839561363117171, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4512,6 +4465,26 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1039721586360569850, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1039721586360569850, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1039721586360569850, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1039721586360569850, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1039721586360569850, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1062717157444337255, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4560,6 +4533,26 @@ PrefabInstance:
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1428936733988020838, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1428936733988020838, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1428936733988020838, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1428936733988020838, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1428936733988020838, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1529748261538296468, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4652,6 +4645,38 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2696951849434447587, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2792920680325341881, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4740,6 +4765,34 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -440
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 125.51999
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 286.84998
objectReference: {fileID: 0}
- target: {fileID: 3888891624253089110, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 3976132546625396958, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4768,6 +4821,34 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 124.8
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 462.00998
objectReference: {fileID: 0}
- target: {fileID: 4433936681926280011, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 4504395504687778956, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4800,6 +4881,34 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4841013803479721482, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4934171152649608560, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4896,6 +5005,26 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -330
objectReference: {fileID: 0}
- target: {fileID: 5720963034508307960, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5720963034508307960, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5720963034508307960, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 124.09
objectReference: {fileID: 0}
- target: {fileID: 5720963034508307960, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 236.135
objectReference: {fileID: 0}
- target: {fileID: 5720963034508307960, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 5833474583663148126, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -4924,6 +5053,30 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6026972614650954365, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6309230753613603339, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 1
@ -4952,9 +5105,13 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -35
objectReference: {fileID: 0}
- target: {fileID: 6448125349934981781, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6448125349934981781, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: -0.0009474608
value: -0.0009642145
objectReference: {fileID: 0}
- target: {fileID: 6537485383528875604, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
@ -5292,6 +5449,30 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -110
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8821734039056801808, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8855145811590553786, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -5301,12 +5482,8 @@ PrefabInstance:
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects:
- {fileID: 8158165551738235553, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 6448125349934981781, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
insertIndex: -1
addedObject: {fileID: 1325306576}
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: fbbace4abceeb19418e16840f571e2bd, type: 3}
--- !u!224 &8401317452346303362 stripped

View File

@ -751,6 +751,33 @@
"interactions": "",
"initialStateCheck": false
},
{
"name": "PressR",
"type": "Button",
"id": "e4fa5849-c9d6-4997-9b4e-90534871a42b",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "PressA",
"type": "Button",
"id": "ba45488a-1cd7-479a-a42c-7ecf4d140eb6",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "PressD",
"type": "Button",
"id": "8eb2dcae-c555-4f18-949a-ead8d65767f9",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "PressAnyKey",
"type": "Button",
@ -843,10 +870,43 @@
"path": "<Keyboard>/e",
"interactions": "",
"processors": "",
"groups": "",
"groups": ";Keyboard&Mouse",
"action": "InteractionE",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "c8c18337-6d1f-47f7-9e88-017d311a5ece",
"path": "<Keyboard>/r",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "PressR",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "35cbd356-f529-4281-94b8-087c7bd21859",
"path": "<Keyboard>/a",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "PressA",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "2df367e5-1d6c-428c-b859-455392708188",
"path": "<Keyboard>/d",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "PressD",
"isComposite": false,
"isPartOfComposite": false
}
]
},

View File

@ -38,6 +38,9 @@ namespace BlueWater
public const string Move = "Move";
public const string Cancel = "Cancel";
public const string PressQ = "PressQ";
public const string PressR = "PressR";
public const string PressA = "PressA";
public const string PressD = "PressD";
public const string PressAnyKey = "PressAnyKey";
public const string InteractionE = "InteractionE";
}

View File

@ -30,6 +30,139 @@ MonoBehaviour:
<PageIndex>k__BackingField: 3
<DescriptionIdx>k__BackingField: TutorialA03
<Sprite>k__BackingField: {fileID: 21300000, guid: 29fd4626221cc4e449047cb509a4b670, type: 3}
- <Key>k__BackingField: TutorialB
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialB
<TitleTextIdx>k__BackingField: TutorialTitleB
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialB01
<Sprite>k__BackingField: {fileID: 21300000, guid: 3d7a8b0b4b41eac4aa4098cef0206994, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialB02
<Sprite>k__BackingField: {fileID: 21300000, guid: 1b6fbbe5c5df6df45b4feabedfc5d24d, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 3
<DescriptionIdx>k__BackingField: TutorialB03
<Sprite>k__BackingField: {fileID: 21300000, guid: 4b752d2d5763abc4cb65b8355450cc70, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 4
<DescriptionIdx>k__BackingField: TutorialB04
<Sprite>k__BackingField: {fileID: 21300000, guid: f13384a7d3bd41a48a5ef3bd2671681b, type: 3}
- <Key>k__BackingField: TutorialC
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialC
<TitleTextIdx>k__BackingField: TutorialTitleC
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialC01
<Sprite>k__BackingField: {fileID: 21300000, guid: 4c88f781368f1354bbc3dc6d16a5e092, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialC02
<Sprite>k__BackingField: {fileID: 21300000, guid: c2b2347daad35824fb06639765562756, type: 3}
- <Key>k__BackingField: TutorialD
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialD
<TitleTextIdx>k__BackingField: TutorialTitleD
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialD01
<Sprite>k__BackingField: {fileID: 21300000, guid: 498ee1d309cc40147be2fbc30f4e1f98, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialD02
<Sprite>k__BackingField: {fileID: 21300000, guid: 0e5d85d1988fddf4489c332411fdcd01, type: 3}
- <Key>k__BackingField: TutorialE
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialE
<TitleTextIdx>k__BackingField: TutorialTitleE
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialE01
<Sprite>k__BackingField: {fileID: 21300000, guid: 50aa58873f7c70a4e9e852c4f85c961d, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialE02
<Sprite>k__BackingField: {fileID: 21300000, guid: 1df0d2dcaa205ac4896a9445e53ca20d, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 3
<DescriptionIdx>k__BackingField: TutorialE03
<Sprite>k__BackingField: {fileID: 21300000, guid: e8737123e0a24884fbdee2f95b076c02, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 4
<DescriptionIdx>k__BackingField: TutorialE04
<Sprite>k__BackingField: {fileID: 21300000, guid: b944272f378e723459f5b917aecea0df, type: 3}
- <Key>k__BackingField: TutorialF
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialF
<TitleTextIdx>k__BackingField: TutorialTitleF
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialF01
<Sprite>k__BackingField: {fileID: 21300000, guid: 34afe998d81409849ac9027c92aa8298, type: 3}
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialF02
<Sprite>k__BackingField: {fileID: 21300000, guid: 314511725dea78e489cd83c8e6e7c7f4, type: 3}
- <Key>k__BackingField: TutorialG
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialG
<TitleTextIdx>k__BackingField: TutorialTitleG
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialG01
<Sprite>k__BackingField: {fileID: 21300000, guid: a89ec2f974875f84ba47bf0ee5f6bf43, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialG02
<Sprite>k__BackingField: {fileID: 21300000, guid: 28a69f413a21ad548aa6e4add76be684, type: 3}
- <Key>k__BackingField: TutorialH
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialH
<TitleTextIdx>k__BackingField: TutorialTitleH
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 3
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialH01
<Sprite>k__BackingField: {fileID: 21300000, guid: db00f49f58fded241a25b68b4ac8ff9a, type: 3}
- <Key>k__BackingField: TutorialI
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialI
<TitleTextIdx>k__BackingField: TutorialTitleI
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 3
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialI01
<Sprite>k__BackingField: {fileID: 21300000, guid: 6758a337148c7474588128873b3695a2, type: 3}
- <Key>k__BackingField: TutorialJ
<Value>k__BackingField:
<TutorialName>k__BackingField: TutorialJ
<TitleTextIdx>k__BackingField: TutorialTitleJ
<TutorialPages>k__BackingField:
- <TutorialPageType>k__BackingField: 0
<PageIndex>k__BackingField: 1
<DescriptionIdx>k__BackingField: TutorialJ01
<Sprite>k__BackingField: {fileID: 21300000, guid: df7a898725d87014cba236537831e17a, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 2
<DescriptionIdx>k__BackingField: TutorialJ02
<Sprite>k__BackingField: {fileID: 21300000, guid: f3aded03bbc1e8345b08380f7647ffd4, type: 3}
- <TutorialPageType>k__BackingField: 1
<PageIndex>k__BackingField: 3
<DescriptionIdx>k__BackingField: TutorialJ03
<Sprite>k__BackingField: {fileID: 21300000, guid: 66cfebf11cb5b7d46bbec75addd1764e, type: 3}
- <TutorialPageType>k__BackingField: 2
<PageIndex>k__BackingField: 4
<DescriptionIdx>k__BackingField: TutorialJ04
<Sprite>k__BackingField: {fileID: 21300000, guid: 5d6455c1c94a7d44395818bc14d8a867, type: 3}
<FirstPopup>k__BackingField: {fileID: 1581927570, guid: d881395249d9f7d43940877db16f096d, type: 3}
<MiddlePopup>k__BackingField: {fileID: 1740845040, guid: 4eb21a9cf7ed8e44388a74756a151b20, type: 3}
<LastPopup>k__BackingField: {fileID: -1576049482, guid: d21603cd31610504c847fd606881daba, type: 3}

View File

@ -100,6 +100,7 @@ namespace BlueWater.Titles
titleOptions.CloseOptions = HideSettingUi;
titleQuitUi.CloseQuit = HideQuitUi;
_tycoonTutorial.CloseAction = HideTutorialUi;
_versionText.text = GetVersion();
inkMaterialInstance = Instantiate(_ink.material);
@ -267,14 +268,17 @@ namespace BlueWater.Titles
public void ShowTutorialUi()
{
_titleMenuUiPanel.SetActive(false);
_tycoonTutorial.ShowUi();
_tycoonTutorial.ShowUi(true);
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(1f));
}
public void HideTutorialUi()
{
_titleMenuUiPanel.SetActive(true);
_tycoonTutorial.HideUi();
EventSystem.current.SetSelectedGameObject(_tutorialButton.gameObject);
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(0.4f));
}
private IEnumerator MoveInkBackground(float pos)

View File

@ -6,12 +6,16 @@ namespace BlueWater.Uis
{
public override void Open()
{
PopupUiController.RegisterPopup(this);
gameObject.SetActive(true);
IsOpened = true;
}
public override void Close()
{
gameObject.SetActive(false);
PopupUiController.UnregisterPopup(this);
IsOpened = false;
}
public override void EnableInput()

View File

@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace BlueWater
{
[Serializable]
public class TutorialLink
{
[field: SerializeField]
public string TutorialName { get; private set; }
[field: SerializeField]
public TutorialPageToggle TutorialPageToggle { get; private set; }
[field: SerializeField]
public List<TycoonTutorialPopupUi> TycoonTutorialPopupUis { get; private set; }
[field: SerializeField]
public int CurrentPageIndex { get; private set; }
public TutorialLink(string tutorialName, TutorialPageToggle tutorialPageToggle, List<TycoonTutorialPopupUi> tycoonTutorialPopupUis)
{
TutorialName = tutorialName;
TutorialPageToggle = tutorialPageToggle;
TycoonTutorialPopupUis = tycoonTutorialPopupUis;
}
public void OnToggle(bool isOn)
{
if (!TutorialPageToggle) return;
TutorialPageToggle.OnToggle(isOn);
if (isOn)
{
OpenPage(0);
}
else
{
CloseAllPage();
}
}
public void OpenPage(int pageIndex)
{
CurrentPageIndex = Mathf.Clamp(pageIndex, 0, TycoonTutorialPopupUis.Count - 1);
TycoonTutorialPopupUis[CurrentPageIndex].Open();
}
public void ClosePage(int pageIndex)
{
TycoonTutorialPopupUis[CurrentPageIndex].Close();
}
public void CloseAllPage()
{
foreach (TycoonTutorialPopupUi tycoonTutorialPopupUi in TycoonTutorialPopupUis)
{
if (!tycoonTutorialPopupUi.IsOpened) continue;
tycoonTutorialPopupUi.Close();
}
}
public void MovePage(bool moveNext)
{
ClosePage(CurrentPageIndex);
OpenPage(CurrentPageIndex + (moveNext ? 1 : -1));
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ac25cbaf820aa674eb6a1539b9ac4c01

View File

@ -8,7 +8,7 @@ namespace BlueWater
First = 0,
Middle = 1,
Last = 2,
Sole = 3
Solo = 3
}
[Serializable]

View File

@ -14,6 +14,9 @@ namespace BlueWater
{
public class TutorialPageToggle : MonoBehaviour
{
[field: SerializeField]
public RectTransform Rect { get; private set; }
[SerializeField]
private Toggle _toggle;
@ -43,7 +46,7 @@ namespace BlueWater
private Coroutine _changedLocaleInstance;
private Sequence _selectSequence;
private Sequence _deselectSequence;
public Action<bool> OnToggleEvent;
private void Awake()
@ -57,8 +60,6 @@ namespace BlueWater
_selectSequence.Kill();
_deselectSequence.Kill();
OnToggleEvent = null;
}
private void OnChangedLocale(Locale locale)
@ -102,17 +103,22 @@ namespace BlueWater
.SetUpdate(true)
.SetAutoKill(false)
.Pause();
_toggle.interactable = true;
_toggle.isOn = false;
_toggleImage.sprite = _deselectToggleSprite;
Vector3 newPosition = _buttonText.transform.localPosition;
newPosition.y = _buttonTextPositionY.x;
_buttonText.transform.localPosition = newPosition;
Vector3 newScale = _toggleImage.transform.localScale;
newScale.y = _buttonImageScale.x;
_toggleImage.transform.localScale = newScale;
}
public void OnToggle(bool isOn)
{
if (_toggle.isOn)
{
_toggle.interactable = false;
return;
}
_toggle.interactable = true;
_toggle.isOn = isOn;
_toggle.interactable = !_toggle.isOn;
if (isOn)
{
@ -126,6 +132,7 @@ namespace BlueWater
_selectSequence?.Pause();
_deselectSequence.Restart();
}
OnToggleEvent?.Invoke(isOn);
}
}

View File

@ -1,29 +1,9 @@
using System;
using System.Collections.Generic;
using BlueWater;
using Sirenix.OdinInspector;
using UnityEngine;
public class TutorialLink
{
public TutorialPageToggle TutorialPageToggle { get; private set; }
public List<TycoonTutorialPopupUi> TycoonTutorialPopupUis { get; private set; }
public TutorialLink(TutorialPageToggle tutorialPageToggle, List<TycoonTutorialPopupUi> tycoonTutorialPopupUis)
{
TutorialPageToggle = tutorialPageToggle;
TycoonTutorialPopupUis = tycoonTutorialPopupUis;
TutorialPageToggle.OnToggleEvent += OnToggle;
}
public void OnToggle(bool isOn)
{
if (isOn)
{
TycoonTutorialPopupUis[0].Open();
}
}
}
using UnityEngine.InputSystem;
using UnityEngine.UI;
namespace BlueWater
{
@ -31,31 +11,69 @@ namespace BlueWater
{
[SerializeField, Required]
private GameObject _tutorialPanel;
[SerializeField, Required]
private GameObject _togglePanel;
[SerializeField, Required]
private ScrollRect _scrollRect;
[SerializeField]
private Transform _buttonContents;
[SerializeField, Required]
private RectTransform _buttonContents;
[SerializeField]
[SerializeField, Required]
private Transform _tutorialPopupUiContents;
[SerializeField]
private GameObject _keyAPanel;
[SerializeField]
private GameObject _keyDPanel;
[SerializeField]
private GameObject _keyEPanel;
[Title("프리팹")]
[SerializeField]
[SerializeField, Required]
private TutorialPageToggle _tutorialPageToggle;
[SerializeField]
[SerializeField, Required]
private TycoonTutorialPopupUi _tutorialPopupUi;
[Title("So")]
[SerializeField, Required]
private TutorialSo _tutorialSo;
private Dictionary<string, TutorialLink> _tutorialLinks;
[Title("실시간 데이터")]
[SerializeField]
private List<TutorialLink> _tutorialLinks;
[SerializeField]
private TutorialLink _currentTutorialLink;
private InputAction _pressQAction;
private InputAction _pressRAction;
private InputAction _pressAAction;
private InputAction _pressDAction;
private InputAction _interactionEAction;
private InputAction _closeAction;
private bool _isInMenu;
private bool _isUpdatingToggle;
public Action CloseAction;
private void Start()
{
_pressQAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressQ);
_pressRAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressR);
_pressAAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressA);
_pressDAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressD);
_interactionEAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.InteractionE);
_closeAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.Cancel);
HideUi();
foreach (Transform element in _buttonContents)
foreach (Transform element in _buttonContents.transform)
{
Destroy(element.gameObject);
}
@ -65,7 +83,7 @@ namespace BlueWater
Destroy(element.gameObject);
}
_tutorialLinks = new Dictionary<string, TutorialLink>(_tutorialSo.GetDataCount());
_tutorialLinks = new List<TutorialLink>(_tutorialSo.GetDataCount());
foreach (TutorialInfo tutorialInfo in _tutorialSo.GetData().Values)
{
TutorialPageToggle tutorialPageToggle = Instantiate(this._tutorialPageToggle, _buttonContents);
@ -75,25 +93,211 @@ namespace BlueWater
for (int i = 0; i < tutorialInfo.TutorialPages.Count; i++)
{
TycoonTutorialPopupUi tycoonTutorialPopupUi = Instantiate(_tutorialPopupUi, _tutorialPopupUiContents);
TutorialPageType tutorialPageType = tutorialInfo.TutorialPages[i].TutorialPageType;
Sprite popupSprite = null;
switch (tutorialPageType)
{
case TutorialPageType.First:
popupSprite = _tutorialSo.FirstPopup;
break;
case TutorialPageType.Middle:
popupSprite = _tutorialSo.MiddlePopup;
break;
case TutorialPageType.Last:
popupSprite = _tutorialSo.LastPopup;
break;
case TutorialPageType.Solo:
popupSprite = _tutorialSo.SoloPopup;
break;
default:
throw new ArgumentOutOfRangeException();
}
tycoonTutorialPopupUi.Initialize(tutorialInfo, i, popupSprite);
tycoonTutorialPopupUis.Add(tycoonTutorialPopupUi);
}
_tutorialLinks.Add(tutorialInfo.TutorialName, new TutorialLink(tutorialPageToggle, tycoonTutorialPopupUis));
TutorialLink tutorialLink = new TutorialLink(tutorialInfo.TutorialName, tutorialPageToggle, tycoonTutorialPopupUis);
tutorialPageToggle.OnToggleEvent += isOn =>
{
if (_isUpdatingToggle) return; // 이벤트 중복 방지
if (isOn)
{
_isUpdatingToggle = true;
CloseKeyPanels();
_currentTutorialLink?.OnToggle(false);
_currentTutorialLink = tutorialLink;
_currentTutorialLink.OnToggle(true);
UpdateKeyPanels();
FocusOnToggle(_currentTutorialLink.TutorialPageToggle);
_isUpdatingToggle = false;
}
};
_tutorialLinks.Add(tutorialLink);
}
_currentTutorialLink = _tutorialLinks[0];
}
public void ShowUi()
private void OnDestroy()
{
if (_tutorialLinks.TryGetValue("TutorialA", out TutorialLink tutorialLink))
{
tutorialLink.TutorialPageToggle.OnToggle(true);
}
_pressQAction = null;
_pressRAction = null;
_pressAAction = null;
_pressDAction = null;
_interactionEAction = null;
_closeAction = null;
}
public void ShowUi(bool isInMenu)
{
_isInMenu = isInMenu;
UpdateKeyPanels();
_currentTutorialLink = _tutorialLinks[0];
_currentTutorialLink.OnToggle(true);
_togglePanel.SetActive(true);
_tutorialPanel.SetActive(true);
_pressQAction.performed += OnMovePreviousToggle;
_pressRAction.performed += OnMovNextToggle;
_pressAAction.performed += OnMovePreviousPage;
_pressDAction.performed += OnMoveNextPage;
if (_isInMenu)
{
FocusOnToggle(_currentTutorialLink.TutorialPageToggle);
_closeAction.performed += OnClose;
}
}
public void ShowUiByIdx(string tutorialName)
{
CloseKeyPanels();
_togglePanel.SetActive(false);
_currentTutorialLink = _tutorialLinks.Find(link => link.TutorialName == tutorialName);
_currentTutorialLink?.OnToggle(true);
_tutorialPanel.SetActive(true);
UpdateKeyPanels();
_pressAAction.performed += OnMovePreviousPage;
_pressDAction.performed += OnMoveNextPage;
}
public void HideUi()
{
_pressQAction.performed -= OnMovePreviousToggle;
_pressRAction.performed -= OnMovNextToggle;
_pressAAction.performed -= OnMovePreviousPage;
_pressDAction.performed -= OnMoveNextPage;
_interactionEAction.performed -= OnClose;
_closeAction.performed -= OnClose;
_togglePanel.SetActive(false);
_tutorialPanel.SetActive(false);
_currentTutorialLink?.OnToggle(false);
CloseKeyPanels();
if (_isInMenu)
{
CloseAction?.Invoke();
}
_isInMenu = false;
}
private void OnMovePreviousToggle(InputAction.CallbackContext context)
{
MoveToggle(-1);
}
private void OnMovNextToggle(InputAction.CallbackContext context)
{
MoveToggle(1);
}
private void MoveToggle(int direction)
{
CloseKeyPanels();
int currentIndex = _tutorialLinks.IndexOf(_currentTutorialLink);
int nextIndex = Mathf.Clamp(currentIndex + direction, 0, _tutorialLinks.Count - 1);
_currentTutorialLink.OnToggle(false);
_currentTutorialLink = _tutorialLinks[nextIndex];
_currentTutorialLink.OnToggle(true);
UpdateKeyPanels();
FocusOnToggle(_currentTutorialLink.TutorialPageToggle);
}
private void FocusOnToggle(TutorialPageToggle selectedToggle)
{
if (!selectedToggle.gameObject.activeInHierarchy) return;
// Viewport와 Content의 너비를 가져오기
float contentWidth = _buttonContents.rect.width; // Content 전체 너비
float viewportWidth = _scrollRect.viewport.rect.width; // Viewport 너비
// 선택된 토글의 x 위치를 Content 기준으로 가져오기
float targetX = selectedToggle.Rect.anchoredPosition.x;
// Normalized Position 계산
// (Content 기준 위치 - 뷰포트 절반) / (Content 너비 - 뷰포트 너비)
float normalizedPosition = Mathf.Clamp01((targetX - (viewportWidth / 2)) / (contentWidth - viewportWidth));
// ScrollRect에 반영
_scrollRect.horizontalNormalizedPosition = normalizedPosition;
}
private void OnMovePreviousPage(InputAction.CallbackContext context)
{
MovePage(false);
}
private void OnMoveNextPage(InputAction.CallbackContext context)
{
MovePage(true);
}
private void MovePage(bool moveNext)
{
if (_currentTutorialLink == null) return;
_currentTutorialLink.MovePage(moveNext);
UpdateKeyPanels();
}
private void CloseKeyPanels()
{
_interactionEAction.performed -= OnClose;
_keyAPanel.SetActive(false);
_keyDPanel.SetActive(false);
_keyEPanel.SetActive(false);
}
private void UpdateKeyPanels()
{
if (_currentTutorialLink == null) return;
int currentPageIndex = _currentTutorialLink.CurrentPageIndex;
int lastPage = _currentTutorialLink.TycoonTutorialPopupUis.Count;
_keyAPanel.SetActive(currentPageIndex > 0);
_keyDPanel.SetActive(currentPageIndex < lastPage - 1);
if (currentPageIndex == lastPage - 1)
{
_keyEPanel.SetActive(true);
_interactionEAction.performed += OnClose;
}
}
private void OnClose(InputAction.CallbackContext context)
{
HideUi();
}
}
}

View File

@ -1,6 +1,8 @@
using System;
using System.Collections;
using BlueWater.Uis;
using BlueWater.Utility;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
@ -12,18 +14,41 @@ namespace BlueWater
{
public class TycoonTutorialPopupUi : TutorialPopupUi
{
[SerializeField]
private Image _popupImage;
[SerializeField]
private TMP_Text _titleText;
[SerializeField]
private RectTransform _descriptionTextRect;
[SerializeField]
private TMP_Text _descriptionText;
[SerializeField]
private RectTransform _descriptionTImageRect;
[SerializeField]
private Image _descriptionImage;
[SerializeField]
private TMP_Text _pageText;
[Title("연출")]
[SerializeField]
private Vector3 _descriptionTextAnchorPositionInFirst = new(0f, -37f, 0f);
[SerializeField]
private Vector3 _descriptionTextAnchorPositionExceptFirst = new(0f, -280f, 0f);
[SerializeField]
private Vector3 _descriptionImageAnchorPositionInFirst = new(0f, -210f, 0f);
[SerializeField]
private Vector3 _descriptionImageAnchorPositionExceptFirst = new(0f, -150f, 0f);
private TutorialInfo _tutorialInfo;
private TutorialPage _tutorialPage;
private Coroutine _changedLocaleInstance;
@ -59,7 +84,7 @@ namespace BlueWater
}
}
public void Initialize(TutorialInfo tutorialInfo, int pageindex)
public void Initialize(TutorialInfo tutorialInfo, int pageindex, Sprite popupSprite)
{
gameObject.SetActive(false);
@ -69,17 +94,24 @@ namespace BlueWater
gameObject.name = $"{_tutorialInfo.TutorialName}{_pageIndex + 1}";
if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Sole)
_popupImage.sprite = popupSprite;
if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Solo)
{
_titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx);
_titleText.enabled = true;
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionInFirst;
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionInFirst;
}
else
{
_titleText.enabled = false;
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionExceptFirst;
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionExceptFirst;
}
_descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx);
_descriptionImage.sprite = _tutorialPage.Sprite;
_pageText.text = $"{_tutorialPage.PageIndex}/{_tutorialInfo.GetPages()}";
}
}

View File

@ -352,6 +352,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 696314dff3acfcf42800aeaeb72ce6f5, type: 3}
m_Name:
m_EditorClassIdentifier:
<Rect>k__BackingField: {fileID: 544138656343027660}
_toggle: {fileID: 3415835946493528833}
_toggleImage: {fileID: 4512403691070795629}
_buttonText: {fileID: 4925199464364819969}

File diff suppressed because it is too large Load Diff

View File

@ -364,10 +364,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 3ba9784e695ed7541b83a7ba1abc6322, type: 3}
m_Name:
m_EditorClassIdentifier:
_popupImage: {fileID: 7646635641658828703}
_titleText: {fileID: 8689142317051947403}
_descriptionTextRect: {fileID: 8058949667021111035}
_descriptionText: {fileID: 6974469971681953221}
_descriptionTImageRect: {fileID: 1278368319364570773}
_descriptionImage: {fileID: 1623653273502312062}
_pageText: {fileID: 6555518522208864136}
_descriptionTextAnchorPositionInFirst: {x: 0, y: -37, z: 0}
_descriptionTextAnchorPositionExceptFirst: {x: 0, y: -280, z: 0}
_descriptionImageAnchorPositionInFirst: {x: 0, y: -210, z: 0}
_descriptionImageAnchorPositionExceptFirst: {x: 0, y: -150, z: 0}
--- !u!1 &6641577588875726565
GameObject:
m_ObjectHideFlags: 0

View File

@ -255,3 +255,5 @@ TutorialTitleH,펌프,Pump,水泵,水泵,ポンプ,Bomba,Насос,Pompe
TutorialTitleI,특별한 보물 상자,Special Treasure Chest,特殊宝箱,特殊寶箱,特別な宝箱,Cofre del Tesoro Especial,Особый сундук с сокровищами,Coffre au Trésor Spécial
TutorialTitleJ,재료 조합,Ingredient Combination,材料组合,材料組合,材料の組み合わせ,Combinación de Ingredientes,Комбинация ингредиентов,Combinaison d'Ingrédients
HowToPlay,플레이 방법,How To Play,遊戲方法,游戏方法,遊び方,Cómo Jugar,Как Играть,Comment Jouer
Previous,이전,Previous,上一个,上一個,前へ (まえへ),Anterior," Предыдущий",Précédent
Next,다음,Next,下一个," 下一個"," 次へ (つぎへ)"," Siguiente"," Следующий",Suivant

1 Key Korean(ko) English(en) Chinese (Simplified)(zh-Hans) Chinese (Traditional) (zh-Hant) Japanese(ja) Spanish (Spain)(es-ES) Russian(ru) French(fr)
255
256
257
258
259

View File

@ -679,6 +679,14 @@ MonoBehaviour:
m_Key: HowToPlay
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Key: Previous
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Key: Next
m_Metadata:
m_Items: []
m_Metadata:
m_Items: []
m_KeyGenerator:

View File

@ -725,6 +725,14 @@ MonoBehaviour:
m_Localized: Ingredient Combination
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: Previous
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: Next
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -719,6 +719,14 @@ MonoBehaviour:
m_Localized: "Combinaci\xF3n de Ingredientes"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: Anterior
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\tSiguiente"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -724,6 +724,14 @@ MonoBehaviour:
m_Localized: "Combinaison d'Ingr\xE9dients"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "Pr\xE9c\xE9dent"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: Suivant
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -689,6 +689,14 @@ MonoBehaviour:
m_Localized: "\u6750\u6599\u306E\u7D44\u307F\u5408\u308F\u305B"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "\u524D\u3078 (\u307E\u3048\u3078)"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\t\u6B21\u3078 (\u3064\u304E\u3078)"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -760,6 +760,14 @@ MonoBehaviour:
m_Localized: "\uC7AC\uB8CC \uC870\uD569"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "\uC774\uC804"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\uB2E4\uC74C"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -907,6 +907,14 @@ MonoBehaviour:
m_Localized: "\u041A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u044F \u0438\u043D\u0433\u0440\u0435\u0434\u0438\u0435\u043D\u0442\u043E\u0432"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "\t\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\t\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -685,6 +685,14 @@ MonoBehaviour:
m_Localized: "\u6750\u6599\u7EC4\u5408"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "\u4E0A\u4E00\u4E2A"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\u4E0B\u4E00\u4E2A"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -685,6 +685,14 @@ MonoBehaviour:
m_Localized: "\u6750\u6599\u7D44\u5408"
m_Metadata:
m_Items: []
- m_Id: 13642850898870272
m_Localized: "\u4E0A\u4E00\u500B"
m_Metadata:
m_Items: []
- m_Id: 13642850919841792
m_Localized: "\t\u4E0B\u4E00\u500B"
m_Metadata:
m_Items: []
references:
version: 2
RefIds: []

View File

@ -15,7 +15,7 @@ MonoBehaviour:
m_DefaultGroup: 8e0a3b4ef79b6b240a41c854861466bc
m_currentHash:
serializedVersion: 2
Hash: 752e2ffa415f639560376d023f23f4fe
Hash: 00000000000000000000000000000000
m_OptimizeCatalogSize: 0
m_BuildRemoteCatalog: 0
m_CatalogRequestsTimeout: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 91c4c233d1371764f92eb6575e9000f7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: