Setup Unity Gaming Services Cloud Services and Authentication Login Sign Up, Implement Register Login Logout and Save Data to Cloud, Save Player Data to Cloud

This commit is contained in:
Shavira 2025-05-25 09:54:47 +07:00
parent 3c5152143f
commit 855a335a9e
31 changed files with 9137 additions and 31949 deletions

View File

@ -12,14 +12,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 31b9fba0680987640ade1fdf5d7d7a95, type: 3} m_Script: {fileID: 11500000, guid: 31b9fba0680987640ade1fdf5d7d7a95, type: 3}
m_Name: Quis Kesehatan Gigi 5 m_Name: Quis Kesehatan Gigi 5
m_EditorClassIdentifier: m_EditorClassIdentifier:
question: 'Apa fungsi fluoride dalam pasta gigi? question: Mengapa penting menyikat gigi sampai bagian dalam?
'
imageQuestion: {fileID: 0} imageQuestion: {fileID: 0}
answers: answers:
- 'Memperkuat gigi dan melawan kuman ' - Karena gigi bagian dalam juga bisa berlubang
- 'Memberi rasa manis ' - Supaya gigi depan lebih putih
- 'Membuat gigi menjadi warna-warni ' - Karena hanya itu yang terlihat
- 'Mengilapkan gigi seperti cermin ' - 'Mengilapkan gigi seperti cermin '
answerIndex: 0 answerIndex: 0
nextSceneName: Lv3HardB nextSceneName: Lv3HardB

View File

@ -15,10 +15,10 @@ MonoBehaviour:
question: Berapa kali sebaiknya kita sikat gigi dalam sehari? question: Berapa kali sebaiknya kita sikat gigi dalam sehari?
imageQuestion: {fileID: 0} imageQuestion: {fileID: 0}
answers: answers:
- Gusi menjadi sehat - 1 kali
- Gigi menjadi lebih kuat - 2 kali
- Gusi bisa terkena radang (gingivitis) - 6 kali
- Gigi terasa aneh - 5 kali
answerIndex: 2 answerIndex: 1
nextSceneName: Lv1MediumB nextSceneName: Lv1MediumB
isMateriKesehatanGigi: 0 isMateriKesehatanGigi: 0

View File

@ -12,13 +12,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 31b9fba0680987640ade1fdf5d7d7a95, type: 3} m_Script: {fileID: 11500000, guid: 31b9fba0680987640ade1fdf5d7d7a95, type: 3}
m_Name: Quis Penyakit Gigi 3 m_Name: Quis Penyakit Gigi 3
m_EditorClassIdentifier: m_EditorClassIdentifier:
question: 'Mengapa gigi bisa jadi sensitif? ' question: Apa penyakit mulut yang menyebabkan luka perih saat makan?
imageQuestion: {fileID: 0} imageQuestion: {fileID: 0}
answers: answers:
- Karena terlalu banyak tertawa - Sariawan
- Karena makan makanan panas atau dingin dan email gigi rusak - Bau mulut
- Karena terlalu banyak menyikat lidah - Gusi berdarah
- Karena terlalu banyak bicara - Gigi Berlubang
answerIndex: 1 answerIndex: 0
nextSceneName: Lv3MediumB nextSceneName: Lv3MediumB
isMateriKesehatanGigi: 0 isMateriKesehatanGigi: 0

View File

@ -724,6 +724,7 @@ RectTransform:
- {fileID: 4124210431478050539} - {fileID: 4124210431478050539}
- {fileID: 794432689946867042} - {fileID: 794432689946867042}
- {fileID: 8502661750080424787} - {fileID: 8502661750080424787}
- {fileID: 3539403489947509410}
- {fileID: 7328646711994992198} - {fileID: 7328646711994992198}
m_Father: {fileID: 6160525822650539252} m_Father: {fileID: 6160525822650539252}
m_RootOrder: 0 m_RootOrder: 0
@ -773,7 +774,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 4707047837917099116} m_Father: {fileID: 4707047837917099116}
m_RootOrder: 4 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
@ -1809,6 +1810,82 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 m_PixelsPerUnitMultiplier: 1
--- !u!1 &6125453419945116066
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4864164393396034508}
- component: {fileID: 6339128215419607562}
- component: {fileID: 6711664751602305243}
m_Layer: 5
m_Name: Penyakit Gigi Image (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4864164393396034508
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6125453419945116066}
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: 6160525824616842327}
m_RootOrder: 4
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: -13, y: -20}
m_SizeDelta: {x: 219.2324, y: 219.2324}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6339128215419607562
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6125453419945116066}
m_CullTransparentMesh: 1
--- !u!114 &6711664751602305243
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6125453419945116066}
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: 14f19c212af9b334891d9cbe3494aed9, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &6130626563550905904 --- !u!1 &6130626563550905904
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1923,141 +2000,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &6160525822842323524
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6160525822842323525}
- component: {fileID: 6160525822842323527}
- component: {fileID: 6160525822842323526}
m_Layer: 5
m_Name: Text - Blue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6160525822842323525
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6160525822842323524}
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: 6160525824274756855}
m_RootOrder: 1
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, y: -43}
m_SizeDelta: {x: 500, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6160525822842323527
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6160525822842323524}
m_CullTransparentMesh: 0
--- !u!114 &6160525822842323526
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6160525822842323524}
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: ...
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_sharedMaterial: {fileID: 6098576539282327867, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4289492527
m_fontColor: {r: 0.18431373, g: 0.46274513, b: 0.6745098, 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: 32
m_fontSizeBase: 32
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
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: 0
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: 1
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 &6160525823035598679 --- !u!1 &6160525823035598679
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2665,7 +2607,6 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 6160525824137767687} - {fileID: 6160525824137767687}
- {fileID: 6160525822842323525}
m_Father: {fileID: 6160525824616842327} m_Father: {fileID: 6160525824616842327}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -2740,6 +2681,7 @@ RectTransform:
- {fileID: 6160525823035598672} - {fileID: 6160525823035598672}
- {fileID: 6160525823877426963} - {fileID: 6160525823877426963}
- {fileID: 6160525824274756855} - {fileID: 6160525824274756855}
- {fileID: 4864164393396034508}
- {fileID: 4485271863734941484} - {fileID: 4485271863734941484}
m_Father: {fileID: 6160525822650539252} m_Father: {fileID: 6160525822650539252}
m_RootOrder: 1 m_RootOrder: 1
@ -2858,7 +2800,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 6160525824616842327} m_Father: {fileID: 6160525824616842327}
m_RootOrder: 4 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
@ -2959,141 +2901,6 @@ MonoBehaviour:
m_StringArgument: m_StringArgument:
m_BoolArgument: 0 m_BoolArgument: 0
m_CallState: 2 m_CallState: 2
--- !u!1 &8387392542494244182
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5524173658643523724}
- component: {fileID: 3288269222743727964}
- component: {fileID: 5850116848677802938}
m_Layer: 5
m_Name: Text - Blue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5524173658643523724
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8387392542494244182}
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: 8502661750080424787}
m_RootOrder: 1
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, y: -43}
m_SizeDelta: {x: 500, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3288269222743727964
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8387392542494244182}
m_CullTransparentMesh: 0
--- !u!114 &5850116848677802938
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8387392542494244182}
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: ...
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_sharedMaterial: {fileID: 6098576539282327867, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4289492527
m_fontColor: {r: 0.18431373, g: 0.46274513, b: 0.6745098, 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: 32
m_fontSizeBase: 32
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
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: 0
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: 1
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 &8502661750092402385 --- !u!1 &8502661750092402385
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3125,7 +2932,6 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 2116146483998663769} - {fileID: 2116146483998663769}
- {fileID: 5524173658643523724}
m_Father: {fileID: 4707047837917099116} m_Father: {fileID: 4707047837917099116}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -3302,3 +3108,79 @@ MonoBehaviour:
m_StringArgument: m_StringArgument:
m_BoolArgument: 0 m_BoolArgument: 0
m_CallState: 2 m_CallState: 2
--- !u!1 &9149000356172206776
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3539403489947509410}
- component: {fileID: 8616712200334048911}
- component: {fileID: 726804256977735436}
m_Layer: 5
m_Name: Penyakit Gigi Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3539403489947509410
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9149000356172206776}
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: 4707047837917099116}
m_RootOrder: 4
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: 28, y: -24}
m_SizeDelta: {x: 219.2324, y: 219.2324}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8616712200334048911
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9149000356172206776}
m_CullTransparentMesh: 1
--- !u!114 &726804256977735436
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9149000356172206776}
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: 59751712fc244c848a514f65d4258b6e, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 5f1beeb75b08c7c48b8a8aebaf8a2f87
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2279,8 +2279,8 @@ MonoBehaviour:
m_faceColor: m_faceColor:
serializedVersion: 2 serializedVersion: 2
rgba: 4294967295 rgba: 4294967295
m_fontSize: 30 m_fontSize: 20
m_fontSizeBase: 30 m_fontSizeBase: 20
m_fontWeight: 400 m_fontWeight: 400
m_enableAutoSizing: 0 m_enableAutoSizing: 0
m_fontSizeMin: 18 m_fontSizeMin: 18
@ -2549,8 +2549,8 @@ MonoBehaviour:
m_faceColor: m_faceColor:
serializedVersion: 2 serializedVersion: 2
rgba: 4294967295 rgba: 4294967295
m_fontSize: 30 m_fontSize: 20
m_fontSizeBase: 30 m_fontSizeBase: 20
m_fontWeight: 400 m_fontWeight: 400
m_enableAutoSizing: 0 m_enableAutoSizing: 0
m_fontSizeMin: 18 m_fontSizeMin: 18
@ -2684,8 +2684,8 @@ MonoBehaviour:
m_faceColor: m_faceColor:
serializedVersion: 2 serializedVersion: 2
rgba: 4294967295 rgba: 4294967295
m_fontSize: 30 m_fontSize: 20
m_fontSizeBase: 30 m_fontSizeBase: 20
m_fontWeight: 400 m_fontWeight: 400
m_enableAutoSizing: 0 m_enableAutoSizing: 0
m_fontSizeMin: 18 m_fontSizeMin: 18
@ -3019,8 +3019,8 @@ MonoBehaviour:
m_faceColor: m_faceColor:
serializedVersion: 2 serializedVersion: 2
rgba: 4294967295 rgba: 4294967295
m_fontSize: 30 m_fontSize: 20
m_fontSizeBase: 30 m_fontSizeBase: 20
m_fontWeight: 400 m_fontWeight: 400
m_enableAutoSizing: 0 m_enableAutoSizing: 0
m_fontSizeMin: 18 m_fontSizeMin: 18
@ -3325,7 +3325,6 @@ MonoBehaviour:
timerImage: {fileID: 1037614131} timerImage: {fileID: 1037614131}
timerText: {fileID: 760767126207873636} timerText: {fileID: 760767126207873636}
gameManager: {fileID: 0} gameManager: {fileID: 0}
dataManager: {fileID: 0}
isComplete: 0 isComplete: 0
timeToCompleteQuestion: 30 timeToCompleteQuestion: 30
timeToShowCorrectAnswer: 2 timeToShowCorrectAnswer: 2

View File

@ -669,11 +669,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 3a8a7cdcb02211e4ba08e1b9a5b4498d, type: 3} m_Script: {fileID: 11500000, guid: 3a8a7cdcb02211e4ba08e1b9a5b4498d, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
dataManager: {fileID: 0}
namePlayer: {fileID: 5989088459531031757} namePlayer: {fileID: 5989088459531031757}
agePlayer: {fileID: 5989088459031437811} agePlayer: {fileID: 5989088459031437811}
dataKesehatanGigiImage: {fileID: 5989088458950881636} dataKesehatanGigiImage: {fileID: 5989088458950881636}
dataPenyakitGigiImage: {fileID: 7238889675074438120} dataPenyakitGigiImage: {fileID: 7238889675074438120}
dataKesehatanGigiText: {fileID: 5989088458163191664}
dataPenyakitGigiText: {fileID: 2910266453543154359}
--- !u!1 &2956738819727036066 --- !u!1 &2956738819727036066
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -789,6 +790,141 @@ RectTransform:
m_AnchoredPosition: {x: 161.67, y: 33} m_AnchoredPosition: {x: 161.67, y: 33}
m_SizeDelta: {x: 500, y: 60} m_SizeDelta: {x: 500, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &3174394660026767848
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4561798414990139740}
- component: {fileID: 8041633165140102979}
- component: {fileID: 1707263176721272571}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4561798414990139740
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3174394660026767848}
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: 7360489094576182663}
m_RootOrder: 0
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, y: 0}
m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8041633165140102979
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3174394660026767848}
m_CullTransparentMesh: 1
--- !u!114 &1707263176721272571
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3174394660026767848}
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: Logout
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_sharedMaterial: {fileID: 6098576539282327867, guid: 9fa5016cb7e534c0aa0c0adb2ecf9124, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, 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: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
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: 0
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 &3385972757574593593 --- !u!1 &3385972757574593593
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1178,6 +1314,140 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_ShowMaskGraphic: 1 m_ShowMaskGraphic: 1
--- !u!1 &5604665394772602486
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7360489094576182663}
- component: {fileID: 920540867146194746}
- component: {fileID: 5780962337112213680}
- component: {fileID: 293547466212429131}
m_Layer: 5
m_Name: Log Out Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7360489094576182663
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5604665394772602486}
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: 4561798414990139740}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 2
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, y: 38.8}
m_SizeDelta: {x: 260, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &920540867146194746
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5604665394772602486}
m_CullTransparentMesh: 0
--- !u!114 &5780962337112213680
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5604665394772602486}
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: e6404ce3667f546569c1c59a6de9495d, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2.6
--- !u!114 &293547466212429131
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5604665394772602486}
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: 5780962337112213680}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2614602336836879672}
m_TargetAssemblyTypeName: ProfileMenu, Assembly-CSharp
m_MethodName: LogoutButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &5989088457677213986 --- !u!1 &5989088457677213986
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2842,10 +3112,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 3 m_RootOrder: 3
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 485, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088457945970232 --- !u!222 &5989088457945970232
CanvasRenderer: CanvasRenderer:
@ -3883,7 +4153,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088458129619889 --- !u!224 &5989088458129619889
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -4402,10 +4672,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 7 m_RootOrder: 7
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 485, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458207346053 --- !u!222 &5989088458207346053
CanvasRenderer: CanvasRenderer:
@ -4630,10 +4900,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 5 m_RootOrder: 5
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 205, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458209613039 --- !u!222 &5989088458209613039
CanvasRenderer: CanvasRenderer:
@ -5120,10 +5390,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 0 m_RootOrder: 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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 65, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458342110391 --- !u!222 &5989088458342110391
CanvasRenderer: CanvasRenderer:
@ -5518,7 +5788,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088458441590670 --- !u!224 &5989088458441590670
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -5885,7 +6155,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088458470902464 --- !u!224 &5989088458470902464
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -5901,7 +6171,7 @@ RectTransform:
- {fileID: 5989088458249421289} - {fileID: 5989088458249421289}
- {fileID: 5989088458465249831} - {fileID: 5989088458465249831}
m_Father: {fileID: 5989088458541418536} m_Father: {fileID: 5989088458541418536}
m_RootOrder: 3 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -6468,7 +6738,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 0 m_IsActive: 1
--- !u!224 &5989088458541418536 --- !u!224 &5989088458541418536
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -6483,11 +6753,12 @@ RectTransform:
m_Children: m_Children:
- {fileID: 5989088458999910891} - {fileID: 5989088458999910891}
- {fileID: 5989088459606568522} - {fileID: 5989088459606568522}
- {fileID: 7360489094576182663}
- {fileID: 5989088459056493161}
- {fileID: 5989088458584838678} - {fileID: 5989088458584838678}
- {fileID: 5989088458470902464} - {fileID: 5989088458470902464}
- {fileID: 5989088458783075994} - {fileID: 5989088458783075994}
- {fileID: 5989088459435989731} - {fileID: 5989088459435989731}
- {fileID: 5989088459056493161}
m_Father: {fileID: 5989088458532923596} m_Father: {fileID: 5989088458532923596}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -6588,7 +6859,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088458584838678 --- !u!224 &5989088458584838678
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -6604,7 +6875,7 @@ RectTransform:
- {fileID: 5989088458441590670} - {fileID: 5989088458441590670}
- {fileID: 5989088458769959667} - {fileID: 5989088458769959667}
m_Father: {fileID: 5989088458541418536} m_Father: {fileID: 5989088458541418536}
m_RootOrder: 2 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -7207,10 +7478,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 6 m_RootOrder: 6
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 345, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458741577436 --- !u!222 &5989088458741577436
CanvasRenderer: CanvasRenderer:
@ -7476,8 +7747,8 @@ RectTransform:
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}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 538.75, y: -45} m_AnchoredPosition: {x: 357.5, y: -45}
m_SizeDelta: {x: 262.5, y: 60} m_SizeDelta: {x: 625, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458769959666 --- !u!222 &5989088458769959666
CanvasRenderer: CanvasRenderer:
@ -7505,7 +7776,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088458783075994 --- !u!224 &5989088458783075994
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -7522,7 +7793,7 @@ RectTransform:
- {fileID: 5989088459403015217} - {fileID: 5989088459403015217}
- {fileID: 5989088458848783171} - {fileID: 5989088458848783171}
m_Father: {fileID: 5989088458541418536} m_Father: {fileID: 5989088458541418536}
m_RootOrder: 4 m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
@ -8377,10 +8648,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 1 m_RootOrder: 1
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 205, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458907099098 --- !u!222 &5989088458907099098
CanvasRenderer: CanvasRenderer:
@ -9710,7 +9981,7 @@ RectTransform:
- {fileID: 5989088459805680634} - {fileID: 5989088459805680634}
- {fileID: 5989088457849387791} - {fileID: 5989088457849387791}
m_Father: {fileID: 5989088458541418536} m_Father: {fileID: 5989088458541418536}
m_RootOrder: 6 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -10370,10 +10641,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 4 m_RootOrder: 4
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 65, y: -200} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459196100026 --- !u!222 &5989088459196100026
CanvasRenderer: CanvasRenderer:
@ -11512,7 +11783,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088459375460310 --- !u!224 &5989088459375460310
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -12308,7 +12579,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5989088459435989731 --- !u!224 &5989088459435989731
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -12326,7 +12597,7 @@ RectTransform:
- {fileID: 5989088459511910105} - {fileID: 5989088459511910105}
- {fileID: 5989088458455795845} - {fileID: 5989088458455795845}
m_Father: {fileID: 5989088458541418536} m_Father: {fileID: 5989088458541418536}
m_RootOrder: 5 m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -12590,10 +12861,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 1 m_RootOrder: 1
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -155} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459438126736 --- !u!222 &5989088459438126736
CanvasRenderer: CanvasRenderer:
@ -12788,10 +13059,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522} m_Father: {fileID: 5989088459606568522}
m_RootOrder: 0 m_RootOrder: 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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 335, y: -45} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 670, y: 90} m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459442087505 --- !u!222 &5989088459442087505
CanvasRenderer: CanvasRenderer:
@ -13896,7 +14167,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 151.55005, y: 260} m_AnchoredPosition: {x: 13, y: 234}
m_SizeDelta: {x: 670, y: 200} m_SizeDelta: {x: 670, y: 200}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5989088459606568525 --- !u!114 &5989088459606568525
@ -14895,10 +15166,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791} m_Father: {fileID: 5989088457849387791}
m_RootOrder: 2 m_RootOrder: 2
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: 0}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 345, y: -60} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 120, y: 120} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459801418017 --- !u!222 &5989088459801418017
CanvasRenderer: CanvasRenderer:

File diff suppressed because it is too large Load Diff

View File

@ -274,58 +274,6 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &929289286
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 929289287}
- component: {fileID: 929289288}
m_Layer: 0
m_Name: Data Manager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &929289287
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 929289286}
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: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &929289288
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 929289286}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eb75bd0186f02cd4f85f84944eba0994, type: 3}
m_Name:
m_EditorClassIdentifier:
saveData:
playerName: Player
agePlayer: 0
unlockLevel: 1
kesehatanGigiStatistik: 0
PenyakitGigiStatistik: 0
isMateriKesehatanGigiComplete: 00000000
isMateriPenyakitGigi1Complete: 000000
--- !u!1 &1144006186 --- !u!1 &1144006186
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -1,21 +1,35 @@
using System; using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;
using TMPro; using TMPro;
using Unity.Services.Authentication; using Unity.Services.Authentication;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
public class AuntMenu : Menu<AuntMenu> public class AuntMenu : Menu<AuntMenu>
{ {
[SerializeField] private TMP_InputField usernameFieldLogin, paswordFieldLogin; [Header("Register")]
[SerializeField] private TMP_InputField usernameFieldRegister, paswordRegister, EmailRegister; [SerializeField] private TMP_InputField usernameFieldRegister;
[SerializeField] private TMP_InputField nameFieldRegister;
[SerializeField] private TMP_InputField ageFieldRegister;
[SerializeField] private TMP_InputField paswordFieldRegister;
[SerializeField] private TMP_InputField EmailFieldRegister;
private string usernameRegister;
private string AgeRegister;
private string EmailRegister;
private string paswordRegister;
[SerializeField] private string username, password; [Header("Login")]
[SerializeField] private TMP_InputField usernameFieldLogin;
[SerializeField] private TMP_InputField paswordFieldLogin;
private string usernameLogin;
private string passwordLogin;
SaveData saveData;
private void OnEnable() private void OnEnable()
{ {
AuthenticationService.Instance.SignedIn += NextToMenu; AuthenticationService.Instance.SignedIn += NextToMenu;
} }
private void OnDisable() private void OnDisable()
@ -23,13 +37,24 @@ public class AuntMenu : Menu<AuntMenu>
AuthenticationService.Instance.SignedIn -= NextToMenu; AuthenticationService.Instance.SignedIn -= NextToMenu;
} }
public void Login() public async void Login()
{ {
username = usernameFieldLogin.text ; usernameLogin = usernameFieldLogin.text.Trim();
password = paswordFieldLogin.text ; passwordLogin = paswordFieldLogin.text.Trim();
AuthenticationManager.SigninUsernamePassword(username, password);
if (string.IsNullOrEmpty(usernameLogin) || string.IsNullOrEmpty(passwordLogin))
{
Debug.LogWarning("Username or password is empty!");
return;
}
await AuthenticationManager.SigninUsernamePassword(usernameLogin, passwordLogin);
usernameFieldLogin.text = "";
paswordFieldLogin.text = "";
} }
private void NextToMenu() private void NextToMenu()
{ {
MainMenu.Open(); MainMenu.Open();
@ -37,8 +62,23 @@ public class AuntMenu : Menu<AuntMenu>
} }
public void Register() public async void Register()
{ {
AuthenticationManager.SignUpUsernamePassword(usernameFieldRegister.text, paswordRegister.text, EmailRegister.text); usernameRegister = usernameFieldRegister.text;
paswordRegister = paswordFieldRegister.text;
EmailRegister = EmailFieldRegister.text;
AgeRegister = ageFieldRegister.text;
if (string.IsNullOrEmpty(usernameRegister) || string.IsNullOrEmpty(paswordRegister))
{
Debug.LogWarning("Username or password is empty!");
return;
}
await AuthenticationManager.SignUpUsernamePassword(usernameRegister, paswordRegister, EmailRegister, AgeRegister);
SaveData dataToSave = new SaveData();
dataToSave.playerName = nameFieldRegister.text;
dataToSave.agePlayer = AgeRegister;
await Cloudsave.SaveData(dataToSave, "DataPlayer");
} }
} }

View File

@ -77,7 +77,7 @@ public static class AuthenticationManager
/// <param name="email">The user's email address.</param> /// <param name="email">The user's email address.</param>
/// <param name="provincy">The user's province or region.</param> /// <param name="provincy">The user's province or region.</param>
/// <returns>A Task representing the asynchronous operation.</returns> /// <returns>A Task representing the asynchronous operation.</returns>
public static async Task SignUpUsernamePassword(string userName, string password, string email) public static async Task SignUpUsernamePassword(string userName, string password, string email, string age)
{ {
try try
{ {
@ -97,7 +97,7 @@ public static class AuthenticationManager
/// <param name="email">The user's email address.</param> /// <param name="email">The user's email address.</param>
/// <param name="provincy">The user's province or region.</param> /// <param name="provincy">The user's province or region.</param>
/// <returns>A Task representing the asynchronous operation.</returns> /// <returns>A Task representing the asynchronous operation.</returns>
public static async Task LinkAccountUsernamePassword(string userName, string password, string email) public static async Task LinkAccountUsernamePassword(string userName, string password, string email, string age)
{ {
try try
{ {

View File

@ -1,91 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataManager : MonoBehaviour
{
public static DataManager instance;
public SaveData saveData;
private JsonSaver jsonSaver;
private void OnEnable()
{
if (instance == null)
{
instance = this;
}
else
{
Destroy(gameObject);
}
}
private void Awake()
{
saveData = new SaveData();
jsonSaver = new JsonSaver();
}
private void Start()
{
DontDestroyOnLoad(gameObject);
}
public bool[] isMateriKesehatanGigiComplete
{
get { return saveData.isMateriKesehatanGigiComplete; }
set { saveData.isMateriKesehatanGigiComplete = value; }
}
public bool[] isMateriPenyakitGigi1Complete
{
get { return saveData.isMateriPenyakitGigi1Complete; }
set { saveData.isMateriPenyakitGigi1Complete = value; }
}
public float MateriKesehatanGigi
{
get { return saveData.kesehatanGigiStatistik; }
set { saveData.kesehatanGigiStatistik = value; }
}
public float MateriPenyakitGigi
{
get { return saveData.PenyakitGigiStatistik; }
set { saveData.PenyakitGigiStatistik = value; }
}
public int UnlockLevel
{
get { return saveData.unlockLevel; }
set { saveData.unlockLevel = value; }
}
public string playerName
{
get { return saveData.playerName; }
set { saveData.playerName = value; }
}
public string agePlayer
{
get { return saveData.agePlayer; }
set { saveData.agePlayer = value; }
}
public void Save()
{
jsonSaver.Save(saveData);
}
public void Load()
{
jsonSaver.Load(saveData);
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: eb75bd0186f02cd4f85f84944eba0994
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,48 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class JsonSaver
{
private static readonly string filename = "saveData1.sav";
public static string GetSaveFilename()
{
return Application.persistentDataPath + "/" + filename;
}
public void Save(SaveData data)
{
string json = JsonUtility.ToJson(data);
string saveFilename = GetSaveFilename();
FileStream fileStream = new FileStream(saveFilename, FileMode.Create);
using(StreamWriter writer = new StreamWriter(fileStream))
{
writer.Write(json);
}
}
public bool Load(SaveData data)
{
string loadFilename = GetSaveFilename();
if(File.Exists(loadFilename))
{
using(StreamReader reader = new StreamReader(loadFilename))
{
string json = reader.ReadToEnd();
JsonUtility.FromJsonOverwrite(json, data);
return true;
}
}
return false;
}
public void Delete()
{
File.Delete(GetSaveFilename());
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: fcdd4c3df6d1bde43a4fa1728fb10e14
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -6,18 +6,18 @@ using UnityEngine.Serialization;
[Serializable] [Serializable]
public class SaveData public class SaveData
{ {
public string fileName = "SaveData";
public string playerName; public string playerName;
private readonly string defaultPlayerName = "Player"; private readonly string defaultPlayerName = "Player";
public string agePlayer; public string agePlayer;
public int unlockLevel; public int unlockLevel;
public float kesehatanGigiStatistik; public float kesehatanGigiStatistik;
public float PenyakitGigiStatistik; public float PenyakitGigiStatistik;
public bool[] isMateriKesehatanGigiComplete = new bool[4]; public bool[] isMateriKesehatanGigiComplete = new bool[4];
public bool[] isMateriPenyakitGigi1Complete= new bool[3]; public bool[] isMateriPenyakitGigi1Complete= new bool[3];
public SaveData() public SaveData()
{ {
playerName = defaultPlayerName; playerName = defaultPlayerName;
@ -35,7 +35,5 @@ public class SaveData
{ {
isMateriPenyakitGigi1Complete[i] = false; isMateriPenyakitGigi1Complete[i] = false;
} }
} }
} }

View File

@ -2,6 +2,8 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using System.Threading.Tasks;
public class Enemy : MonoBehaviour public class Enemy : MonoBehaviour
{ {
@ -14,6 +16,10 @@ public class Enemy : MonoBehaviour
public float damage; public float damage;
public bool isBosStage2; public bool isBosStage2;
[SerializeField] private GameObject pastaGigi; [SerializeField] private GameObject pastaGigi;
private SaveData saveData;
private void Start() private void Start()
{ {
@ -35,12 +41,13 @@ public class Enemy : MonoBehaviour
transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime); transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime);
} }
private void OnTriggerEnter2D(Collider2D other) private async void OnTriggerEnter2D(Collider2D other)
{ {
if (other.CompareTag("Bullet")) if (other.CompareTag("Bullet"))
{ {
GameObject bullet = other.gameObject; GameObject bullet = other.gameObject;
bullet.gameObject.SetActive(false); bullet.SetActive(false);
if (health >= 1) if (health >= 1)
{ {
health -= damage; health -= damage;
@ -49,31 +56,34 @@ public class Enemy : MonoBehaviour
{ {
pastaGigi.SetActive(true); pastaGigi.SetActive(true);
} }
if (health <= 0) if (health <= 0)
{ {
ExecuteBosDeath(); await ExecuteBosDeath();
} }
} }
else else
{ {
ExecuteBosDeath(); await ExecuteBosDeath();
} }
} }
} }
void ExecuteBosDeath() private async Task ExecuteBosDeath()
{ {
SaveData saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
if (isBosStage2) if (isBosStage2)
{ {
int currentLevel = gameManager.levelCurrentIndex; int currentLevel = gameManager.levelCurrentIndex;
if (currentLevel == DataManager.instance.UnlockLevel) if (currentLevel == saveData.unlockLevel)
{ {
DataManager.instance.UnlockLevel = currentLevel + 1; saveData.unlockLevel = currentLevel + 1;
} }
await Cloudsave.SaveData(saveData, "DataPlayer");
gameObject.SetActive(false); gameObject.SetActive(false);
WinScreen.Open(); WinScreen.Open();
DataManager.instance.Save();
} }
else else
{ {
@ -81,6 +91,6 @@ public class Enemy : MonoBehaviour
QuizPopUp.Open(); QuizPopUp.Open();
gameObject.SetActive(false); gameObject.SetActive(false);
} }
} }
} }

View File

@ -1,62 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class FirstData : Menu<FirstData>
{
[SerializeField] private DataManager dataManager;
protected override void Awake()
{
base.Awake();
dataManager = DataManager.instance;
}
public void OnValueTextNameChange(string name)
{
if (dataManager != null)
{
dataManager.playerName = name;
}
}
public void OnValueIntAgeChange(string age)
{
if (dataManager != null)
{
dataManager.agePlayer = age;
}
}
public void OnValueBoolBoyGenderChange(bool isBoy)
{
}
public void OnValueTextNameEndChanged()
{
dataManager.Save();
}
public void OnValueTextAgeEndChanged()
{
dataManager.Save();
}
public void NextToMainMenu()
{
audioController.Instance.PlaySFX("TombolClose", 0.5f);
if (dataManager.playerName == string.Empty || dataManager.agePlayer == string.Empty)
{
Debug.Log("Please isi dulu lek");
}
else
{
dataManager.Save();
Debug.Log("string ga kosong");
MainMenu.Open();
}
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: e759119ed3ba28844a72d557edecf0e0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -6,13 +6,6 @@ using UnityEngine;
public class MainMenu : Menu<MainMenu> public class MainMenu : Menu<MainMenu>
{ {
[SerializeField] private DataManager dataManager;
protected override void Awake()
{
base.Awake();
dataManager = DataManager.instance;
}
private void Start() private void Start()
{ {
audioController.Instance.PlayBGM("Background Music", 0.5f); audioController.Instance.PlayBGM("Background Music", 0.5f);
@ -24,11 +17,6 @@ public class MainMenu : Menu<MainMenu>
yield return new WaitForSeconds(1); yield return new WaitForSeconds(1);
} }
private void LoadData()
{
dataManager.Load();
}
public void OnPlayPressed() public void OnPlayPressed()
{ {
audioController.Instance.PlaySFX("TombolUmum", 0.5f); audioController.Instance.PlaySFX("TombolUmum", 0.5f);
@ -57,6 +45,7 @@ public class MainMenu : Menu<MainMenu>
public override void OnBackPressed() public override void OnBackPressed()
{ {
audioController.Instance.PlaySFX("TombolClose", 0.5f); audioController.Instance.PlaySFX("TombolClose", 0.5f);
AuthenticationManager.Signout();
Application.Quit(); Application.Quit();
} }
} }

View File

@ -31,6 +31,25 @@ public abstract class Menu<T> : Menu where T : Menu<T>
MenuManager.Instance.OpenMenu(Instance); MenuManager.Instance.OpenMenu(Instance);
} }
} }
private void OnApplicationPause(bool pause)
{
if (pause)
{
HandleAppExit();
}
}
private void OnApplicationQuit()
{
HandleAppExit();
}
private void HandleAppExit()
{
AuthenticationManager.Signout();
Debug.Log("User logged out automatically on app exit");
}
} }

View File

@ -55,6 +55,7 @@ public class MenuManager : MonoBehaviour
private void InitializeMenus() private void InitializeMenus()
{ {
int isFirst;
Debug.Log(Application.persistentDataPath); Debug.Log(Application.persistentDataPath);
if (menuParent == null) if (menuParent == null)
@ -77,7 +78,10 @@ public class MenuManager : MonoBehaviour
Menu menuInstance = Instantiate(prefab, menuParent); Menu menuInstance = Instantiate(prefab, menuParent);
menuInstance.gameObject.SetActive(true); // Refresh the instance to prevent a null reference. menuInstance.gameObject.SetActive(true); // Refresh the instance to prevent a null reference.
menuInstance.gameObject.SetActive(false); menuInstance.gameObject.SetActive(false);
if (prefab == mainMenuPrefabs)
if (prefab == auntMenuPrefabs)
{ {
OpenMenu(menuInstance); OpenMenu(menuInstance);
} }

View File

@ -1,146 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PopUpQuestion : Menu<PopUpQuestion>
{
public QuestionSO question;
[SerializeField] private TextMeshProUGUI questionText;
[SerializeField] private TextMeshProUGUI[] answers;
[SerializeField] private Button[] answerButtons;
[SerializeField] DataManager dataManager;
[SerializeField] private GameManager gameManager;
private bool hasAnswerEarly;
[Header("Timer")]
[SerializeField] Image timerImage;
Timer timer;
public bool isComplete = false;
private Image defaultButtonImage;
private void OnEnable()
{
timer = GetComponent<Timer>();
dataManager = DataManager.instance;
gameManager = FindObjectOfType<GameManager>();
if (gameManager != null)
{
question = gameManager.currentQuestion;
questionText.text = question.question;
ResetQuestionUI();
for (int i = 0; i < answerButtons.Length; i++)
{
answers[i].text = question.answers[i];
SetButtonState(true);
}
SetDefaultButtonSprites();
}
}
void ResetQuestionUI()
{
hasAnswerEarly = false;
isComplete = false;
if (question != null)
questionText.text = question.question;
for (int i = 0; i < answerButtons.Length; i++)
{
answers[i].text = question.answers[i];
Image buttonImage = answerButtons[i].GetComponent<Image>();
buttonImage.color = Color.white;
answerButtons[i].interactable = true;
}
}
void SetButtonState(bool state)
{
for (int i = 0; i < answerButtons.Length; i++)
{
answerButtons[i].interactable = state;
}
}
private void Update()
{
StateQuestion();
}
void StateQuestion()
{
}
void SetDefaultButtonSprites()
{
for (int i = 0; i < answerButtons.Length; i++)
{
Image buttonImage = answerButtons[i].gameObject.GetComponent<Image>();
defaultButtonImage = buttonImage;
}
}
public void OnAnswerSelected(int index)
{
hasAnswerEarly = true;
DisplayAnswer(index);
SetButtonState(false);
}
void DisplayAnswer(int index)
{
if (index == question.answerIndex)
{
// audio benar
questionText.text = "Kamu Benar !";
Image buttonImage = answerButtons[index].gameObject.GetComponent<Image>();
buttonImage.color = Color.green;
isComplete = true;
StartCoroutine(DelayAfterAnswerTrue());
}
else
{
// audio salah
questionText.text = "Jawaban Salah !";
Image buttonImage = answerButtons[index].gameObject.GetComponent<Image>();
buttonImage.color = Color.red;
StartCoroutine(DelayAfterAnswerFalse());
}
}
IEnumerator DelayAfterAnswerTrue()
{
if (question.isMateriKesehatanGigi)
{
dataManager.MateriKesehatanGigi += 20;
}
else
{
dataManager.MateriPenyakitGigi += 25;
}
yield return new WaitForSeconds(1f);
SceneController.Instance.LoadScene(question.nextSceneName);
dataManager.Save();
GameMenu.Open();
}
IEnumerator DelayAfterAnswerFalse()
{
yield return new WaitForSeconds(.5f);
SceneController.Instance.RestartScene();
GameMenu.Open();
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 9c3d76c74951e8a42b03c742b7d69ece
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,40 +1,48 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
public class ProfileMenu : Menu<ProfileMenu> public class ProfileMenu : Menu<ProfileMenu>
{ {
[SerializeField] private DataManager dataManager; private SaveData saveData;
[SerializeField] private TextMeshProUGUI namePlayer, agePlayer; [SerializeField] private TextMeshProUGUI namePlayer, agePlayer;
[SerializeField] private Image dataKesehatanGigiImage; [SerializeField] private Image dataKesehatanGigiImage;
[SerializeField] private Image dataPenyakitGigiImage; [SerializeField] private Image dataPenyakitGigiImage;
[SerializeField] private TextMeshProUGUI dataKesehatanGigiText;
[SerializeField] private TextMeshProUGUI dataPenyakitGigiText;
private void OnEnable() private void OnEnable()
{ {
StartCoroutine(DelayShowData()); LoadAndRefresh();
} }
IEnumerator DelayShowData() private async void LoadAndRefresh()
{ {
yield return new WaitForSeconds(1); saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
dataManager = DataManager.instance;
dataManager.Load(); if (saveData == null)
{
namePlayer.text = dataManager.playerName; Debug.LogWarning("DataPlayer tidak ditemukan di cloud!");
agePlayer.text = dataManager.agePlayer + " " + "Tahun"; return;
}
dataKesehatanGigiImage.fillAmount = dataManager.MateriKesehatanGigi / 100f;
dataPenyakitGigiImage.fillAmount = dataManager.MateriPenyakitGigi / 100f; namePlayer.text = saveData.playerName;
agePlayer.text = saveData.agePlayer + " Tahun";
dataManager.Save(); dataKesehatanGigiImage.fillAmount = (float)saveData.kesehatanGigiStatistik / 100f;
dataPenyakitGigiImage.fillAmount = (float)saveData.PenyakitGigiStatistik / 100f;
var task = Cloudsave.SaveData(dataManager.saveData, "Bebas");
yield return task; dataKesehatanGigiText.text = saveData.kesehatanGigiStatistik.ToString("F1");
dataPenyakitGigiText.text = saveData.PenyakitGigiStatistik.ToString("F1");
} }
public override void OnBackPressed() public override void OnBackPressed()
{ {
audioController.Instance.PlaySFX("TombolClose", 0.5f); audioController.Instance.PlaySFX("TombolClose", 0.5f);
@ -47,6 +55,13 @@ public class ProfileMenu : Menu<ProfileMenu>
} }
public void LogoutButton()
{
audioController.Instance.PlaySFX("TombolClose", 0.5f);
AuthenticationManager.Signout();
AuntMenu.Open();
}
public void StatisticProfileButton() public void StatisticProfileButton()
{ {
audioController.Instance.PlaySFX("TombolUmum", 0.5f); audioController.Instance.PlaySFX("TombolUmum", 0.5f);

View File

@ -24,7 +24,6 @@ public class QuizPopUp : Menu<QuizPopUp>
[SerializeField] Image timerImage; [SerializeField] Image timerImage;
[SerializeField] TextMeshProUGUI timerText; [SerializeField] TextMeshProUGUI timerText;
public GameManager gameManager; public GameManager gameManager;
public DataManager dataManager;
public bool isComplete = false; public bool isComplete = false;
@ -43,7 +42,6 @@ public class QuizPopUp : Menu<QuizPopUp>
private void OnEnable() private void OnEnable()
{ {
gameManager = FindObjectOfType<GameManager>(); gameManager = FindObjectOfType<GameManager>();
dataManager = FindObjectOfType<DataManager>();
if (gameManager == null) return; if (gameManager == null) return;
@ -196,7 +194,7 @@ public class QuizPopUp : Menu<QuizPopUp>
buttonImage.sprite = trueAnswerSprite; buttonImage.sprite = trueAnswerSprite;
// implement score ++; // implement score ++;
isComplete = true; isComplete = true;
StartCoroutine(DelayAfterAnswerTrue()); DelayAfterAnswerTrue();
} }
@ -207,7 +205,6 @@ public class QuizPopUp : Menu<QuizPopUp>
buttonImage = answerButtons[index].GetComponent<Image>(); buttonImage = answerButtons[index].GetComponent<Image>();
buttonImage.sprite = falseAnswerSprite; buttonImage.sprite = falseAnswerSprite;
StartCoroutine(DelayAfterAnswerFalse()); StartCoroutine(DelayAfterAnswerFalse());
} }
} }
@ -231,34 +228,51 @@ public class QuizPopUp : Menu<QuizPopUp>
} }
} }
IEnumerator DelayAfterAnswerTrue() private async void DelayAfterAnswerTrue()
{ {
dataManager.Load(); SaveData saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
int checkData = gameManager.indexQuestion;
if (currentQuestion.isMateriKesehatanGigi) if (currentQuestion.isMateriKesehatanGigi)
{ {
int checkData = gameManager.indexQuestion; if (checkData >= 0 && checkData < saveData.isMateriKesehatanGigiComplete.Length)
if (dataManager.isMateriKesehatanGigiComplete[checkData] == false)
{ {
dataManager.isMateriKesehatanGigiComplete[checkData] = true; if (!saveData.isMateriKesehatanGigiComplete[checkData])
dataManager.MateriKesehatanGigi += 20; {
dataManager.Save(); saveData.isMateriKesehatanGigiComplete[checkData] = true;
saveData.kesehatanGigiStatistik = Mathf.Min(saveData.kesehatanGigiStatistik + 25f, 100f);
await Cloudsave.SaveData(saveData, "DataPlayer");
}
}
else
{
Debug.LogWarning($"Index {checkData} out of bounds for isMateriKesehatanGigiComplete (length: {saveData.isMateriKesehatanGigiComplete.Length})");
} }
} }
else else
{ {
int checkData = gameManager.indexQuestion; if (checkData >= 0 && checkData < saveData.isMateriPenyakitGigi1Complete.Length)
if (dataManager.isMateriPenyakitGigi1Complete[checkData] == false)
{ {
dataManager.isMateriPenyakitGigi1Complete[checkData] = true; if (!saveData.isMateriPenyakitGigi1Complete[checkData])
dataManager.MateriPenyakitGigi += 25; {
dataManager.Save(); saveData.isMateriPenyakitGigi1Complete[checkData] = true;
saveData.PenyakitGigiStatistik = Mathf.Min(Mathf.Ceil(saveData.PenyakitGigiStatistik + 33.33f), 100f);
await Cloudsave.SaveData(saveData, "DataPlayer");
}
}
else
{
Debug.LogWarning($"Index {checkData} out of bounds for isMateriPenyakitGigi1Complete (length: {saveData.isMateriPenyakitGigi1Complete.Length})");
} }
} }
yield return new WaitForSeconds(1);
SceneController.Instance.LoadScene(currentQuestion.nextSceneName); SceneController.Instance.LoadScene(currentQuestion.nextSceneName);
dataManager.Save(); await Cloudsave.SaveData(saveData, "DataPlayer");
GameMenu.Open(); GameMenu.Open();
} }
IEnumerator DelayAfterAnswerFalse() IEnumerator DelayAfterAnswerFalse()
{ {

View File

@ -2,8 +2,8 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI; using UnityEngine.UI;
using System.Threading.Tasks;
public class SelectLevel : Menu<SelectLevel> public class SelectLevel : Menu<SelectLevel>
{ {
@ -12,33 +12,32 @@ public class SelectLevel : Menu<SelectLevel>
[SerializeField] private Button[] buttons; [SerializeField] private Button[] buttons;
[SerializeField] private int indexUnlock; [SerializeField] private int indexUnlock;
[SerializeField] private DataManager dataManager;
[SerializeField] private Sprite completeSprite; [SerializeField] private Sprite completeSprite;
[SerializeField] private Sprite lockedSprite; [SerializeField] private Sprite lockedSprite;
[SerializeField] private Sprite currentSprite; [SerializeField] private Sprite currentSprite;
private void OnEnable() private SaveData saveData;
private async void OnEnable()
{ {
dataManager = DataManager.instance; await LoadAndRefresh();
StartCoroutine(DelayDataManager());
} }
IEnumerator DelayDataManager() private async Task LoadAndRefresh()
{ {
yield return new WaitForSeconds(.1f); saveData = await Cloudsave.LoadData<SaveData>( "DataPlayer");
RefreshButtonsUnlockProggres();
RefreshButtonsUnlockProgress();
} }
private void OnDisable() void RefreshButtonsUnlockProgress()
{ {
RefreshButtonsUnlockProggres(); indexUnlock = saveData.unlockLevel;
} if (indexUnlock == null)
{
void RefreshButtonsUnlockProggres() indexUnlock = 1;
{ }
dataManager.Load();
indexUnlock = dataManager.UnlockLevel;
for (int i = 0; i < buttons.Length; i++) for (int i = 0; i < buttons.Length; i++)
{ {
@ -46,28 +45,22 @@ public class SelectLevel : Menu<SelectLevel>
if (i < indexUnlock - 1) if (i < indexUnlock - 1)
{ {
// ✅ Level yang sudah selesai → completeSprite, tidak bisa dibuka
imgSprite.sprite = completeSprite; imgSprite.sprite = completeSprite;
buttons[i].interactable = true; buttons[i].interactable = true;
} }
else if (i == indexUnlock - 1) else if (i == indexUnlock - 1)
{ {
// ✅ Level yang sedang bisa dimainkan → currentSprite, bisa dibuka
imgSprite.sprite = currentSprite; imgSprite.sprite = currentSprite;
buttons[i].interactable = true; buttons[i].interactable = true;
} }
else else
{ {
// ❌ Level yang belum dibuka → lockedSprite, tidak bisa dibuka
imgSprite.sprite = lockedSprite; imgSprite.sprite = lockedSprite;
buttons[i].interactable = false; buttons[i].interactable = false;
} }
} }
} }
void RefreshContainer() void RefreshContainer()
{ {
for (int i = 0; i < containerLevelButton.Length; i++) for (int i = 0; i < containerLevelButton.Length; i++)
@ -79,27 +72,23 @@ public class SelectLevel : Menu<SelectLevel>
public void NextLevelButton() public void NextLevelButton()
{ {
Debug.Log("NextLevelButton");
indexContainer++; indexContainer++;
if (indexContainer >= containerLevelButton.Length) if (indexContainer >= containerLevelButton.Length)
{ {
indexContainer = 0; indexContainer = 0;
} }
RefreshContainer();
RefreshContainer();
} }
public void PreviousLevelButton() public void PreviousLevelButton()
{ {
Debug.Log("PreviousLevelButton");
indexContainer--; indexContainer--;
if (indexContainer < 0) if (indexContainer < 0)
{ {
indexContainer = containerLevelButton.Length - 1; indexContainer = containerLevelButton.Length - 1;
} }
RefreshContainer(); RefreshContainer();
} }

View File

@ -6,30 +6,15 @@ using UnityEngine.UI;
public class SettingsMenu : Menu<SettingsMenu> public class SettingsMenu : Menu<SettingsMenu>
{ {
private DataManager dataManager;
public bool isMusicOn = true; public bool isMusicOn = true;
public bool isSfxOn = true; public bool isSfxOn = true;
protected override void Awake()
{
base.Awake();
dataManager = DataManager.instance;
}
private void Start()
{
}
public override void OnBackPressed() public override void OnBackPressed()
{ {
base.OnBackPressed(); base.OnBackPressed();
audioController.Instance.PlaySFX("TombolClose", 0.5f); audioController.Instance.PlaySFX("TombolClose", 0.5f);
if (dataManager != null)
{
dataManager.Save();
}
} }
public void SwapSoundMusic() public void SwapSoundMusic()
@ -72,14 +57,4 @@ public class SettingsMenu : Menu<SettingsMenu>
} }
} }
//public void LoadData()
//{
// if (dataManager == null || sfxSliderVolume == null || musicSliderVolume == null)
// return;
// dataManager.Load();
// sfxSliderVolume.enabled = dataManager.sfxVolume;
// musicSliderVolume.enabled = dataManager.musicVolume;
//}
} }

View File

@ -0,0 +1,4 @@
{
"EnvironmentName": "",
"EnvironmentId": "00000000-0000-0000-0000-000000000000"
}

View File

@ -801,11 +801,11 @@ PlayerSettings:
apiCompatibilityLevel: 6 apiCompatibilityLevel: 6
activeInputHandler: 0 activeInputHandler: 0
windowsGamepadBackendHint: 0 windowsGamepadBackendHint: 0
cloudProjectId: c564a27f-9043-4e3d-a0b4-b056edbc5b3f cloudProjectId: eb23755b-bad6-47c2-8913-d9a87307f7f0
framebufferDepthMemorylessMode: 0 framebufferDepthMemorylessMode: 0
qualitySettingsNames: [] qualitySettingsNames: []
projectName: ToothyV projectName: ToothyV
organizationId: asuranimation organizationId: shaviragirls
cloudEnabled: 0 cloudEnabled: 0
legacyClampBlendShapeWeights: 0 legacyClampBlendShapeWeights: 0
playerDataPath: playerDataPath: