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_Name: Quis Kesehatan Gigi 5
m_EditorClassIdentifier:
question: 'Apa fungsi fluoride dalam pasta gigi?
'
question: Mengapa penting menyikat gigi sampai bagian dalam?
imageQuestion: {fileID: 0}
answers:
- 'Memperkuat gigi dan melawan kuman '
- 'Memberi rasa manis '
- 'Membuat gigi menjadi warna-warni '
- Karena gigi bagian dalam juga bisa berlubang
- Supaya gigi depan lebih putih
- Karena hanya itu yang terlihat
- 'Mengilapkan gigi seperti cermin '
answerIndex: 0
nextSceneName: Lv3HardB

View File

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

View File

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

View File

@ -724,6 +724,7 @@ RectTransform:
- {fileID: 4124210431478050539}
- {fileID: 794432689946867042}
- {fileID: 8502661750080424787}
- {fileID: 3539403489947509410}
- {fileID: 7328646711994992198}
m_Father: {fileID: 6160525822650539252}
m_RootOrder: 0
@ -773,7 +774,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4707047837917099116}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -1809,6 +1810,82 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
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
GameObject:
m_ObjectHideFlags: 0
@ -1923,141 +2000,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
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
GameObject:
m_ObjectHideFlags: 0
@ -2665,7 +2607,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6160525824137767687}
- {fileID: 6160525822842323525}
m_Father: {fileID: 6160525824616842327}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -2740,6 +2681,7 @@ RectTransform:
- {fileID: 6160525823035598672}
- {fileID: 6160525823877426963}
- {fileID: 6160525824274756855}
- {fileID: 4864164393396034508}
- {fileID: 4485271863734941484}
m_Father: {fileID: 6160525822650539252}
m_RootOrder: 1
@ -2858,7 +2800,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6160525824616842327}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -2959,141 +2901,6 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
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
GameObject:
m_ObjectHideFlags: 0
@ -3125,7 +2932,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2116146483998663769}
- {fileID: 5524173658643523724}
m_Father: {fileID: 4707047837917099116}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -3302,3 +3108,79 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
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:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30
m_fontSizeBase: 30
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
@ -2549,8 +2549,8 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30
m_fontSizeBase: 30
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
@ -2684,8 +2684,8 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30
m_fontSizeBase: 30
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
@ -3019,8 +3019,8 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30
m_fontSizeBase: 30
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
@ -3325,7 +3325,6 @@ MonoBehaviour:
timerImage: {fileID: 1037614131}
timerText: {fileID: 760767126207873636}
gameManager: {fileID: 0}
dataManager: {fileID: 0}
isComplete: 0
timeToCompleteQuestion: 30
timeToShowCorrectAnswer: 2

View File

@ -669,11 +669,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 3a8a7cdcb02211e4ba08e1b9a5b4498d, type: 3}
m_Name:
m_EditorClassIdentifier:
dataManager: {fileID: 0}
namePlayer: {fileID: 5989088459531031757}
agePlayer: {fileID: 5989088459031437811}
dataKesehatanGigiImage: {fileID: 5989088458950881636}
dataPenyakitGigiImage: {fileID: 7238889675074438120}
dataKesehatanGigiText: {fileID: 5989088458163191664}
dataPenyakitGigiText: {fileID: 2910266453543154359}
--- !u!1 &2956738819727036066
GameObject:
m_ObjectHideFlags: 0
@ -789,6 +790,141 @@ RectTransform:
m_AnchoredPosition: {x: 161.67, y: 33}
m_SizeDelta: {x: 500, y: 60}
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
GameObject:
m_ObjectHideFlags: 0
@ -1178,6 +1314,140 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
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
GameObject:
m_ObjectHideFlags: 0
@ -2842,10 +3112,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 485, y: -60}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088457945970232
CanvasRenderer:
@ -3883,7 +4153,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088458129619889
RectTransform:
m_ObjectHideFlags: 0
@ -4402,10 +4672,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 485, y: -200}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458207346053
CanvasRenderer:
@ -4630,10 +4900,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 205, y: -200}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458209613039
CanvasRenderer:
@ -5120,10 +5390,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 65, y: -60}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458342110391
CanvasRenderer:
@ -5518,7 +5788,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088458441590670
RectTransform:
m_ObjectHideFlags: 0
@ -5885,7 +6155,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088458470902464
RectTransform:
m_ObjectHideFlags: 0
@ -5901,7 +6171,7 @@ RectTransform:
- {fileID: 5989088458249421289}
- {fileID: 5989088458465249831}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 3
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -6468,7 +6738,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &5989088458541418536
RectTransform:
m_ObjectHideFlags: 0
@ -6483,11 +6753,12 @@ RectTransform:
m_Children:
- {fileID: 5989088458999910891}
- {fileID: 5989088459606568522}
- {fileID: 7360489094576182663}
- {fileID: 5989088459056493161}
- {fileID: 5989088458584838678}
- {fileID: 5989088458470902464}
- {fileID: 5989088458783075994}
- {fileID: 5989088459435989731}
- {fileID: 5989088459056493161}
m_Father: {fileID: 5989088458532923596}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -6588,7 +6859,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088458584838678
RectTransform:
m_ObjectHideFlags: 0
@ -6604,7 +6875,7 @@ RectTransform:
- {fileID: 5989088458441590670}
- {fileID: 5989088458769959667}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 2
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}
@ -7207,10 +7478,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -200}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458741577436
CanvasRenderer:
@ -7476,8 +7747,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 538.75, y: -45}
m_SizeDelta: {x: 262.5, y: 60}
m_AnchoredPosition: {x: 357.5, y: -45}
m_SizeDelta: {x: 625, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458769959666
CanvasRenderer:
@ -7505,7 +7776,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088458783075994
RectTransform:
m_ObjectHideFlags: 0
@ -7522,7 +7793,7 @@ RectTransform:
- {fileID: 5989088459403015217}
- {fileID: 5989088458848783171}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 4
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
@ -8377,10 +8648,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 205, y: -60}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088458907099098
CanvasRenderer:
@ -9710,7 +9981,7 @@ RectTransform:
- {fileID: 5989088459805680634}
- {fileID: 5989088457849387791}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 6
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -10370,10 +10641,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 65, y: -200}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459196100026
CanvasRenderer:
@ -11512,7 +11783,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088459375460310
RectTransform:
m_ObjectHideFlags: 0
@ -12308,7 +12579,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5989088459435989731
RectTransform:
m_ObjectHideFlags: 0
@ -12326,7 +12597,7 @@ RectTransform:
- {fileID: 5989088459511910105}
- {fileID: 5989088458455795845}
m_Father: {fileID: 5989088458541418536}
m_RootOrder: 5
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -12590,10 +12861,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335, y: -155}
m_SizeDelta: {x: 670, y: 90}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459438126736
CanvasRenderer:
@ -12788,10 +13059,10 @@ RectTransform:
m_Father: {fileID: 5989088459606568522}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335, y: -45}
m_SizeDelta: {x: 670, y: 90}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459442087505
CanvasRenderer:
@ -13896,7 +14167,7 @@ RectTransform:
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: 151.55005, y: 260}
m_AnchoredPosition: {x: 13, y: 234}
m_SizeDelta: {x: 670, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5989088459606568525
@ -14895,10 +15166,10 @@ RectTransform:
m_Father: {fileID: 5989088457849387791}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 345, y: -60}
m_SizeDelta: {x: 120, y: 120}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5989088459801418017
CanvasRenderer:

File diff suppressed because it is too large Load Diff

View File

@ -274,58 +274,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 1
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
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,21 +1,35 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro;
using Unity.Services.Authentication;
using UnityEngine;
using UnityEngine.UI;
public class AuntMenu : Menu<AuntMenu>
{
[SerializeField] private TMP_InputField usernameFieldLogin, paswordFieldLogin;
[SerializeField] private TMP_InputField usernameFieldRegister, paswordRegister, EmailRegister;
[Header("Register")]
[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()
{
AuthenticationService.Instance.SignedIn += NextToMenu;
}
private void OnDisable()
@ -23,13 +37,24 @@ public class AuntMenu : Menu<AuntMenu>
AuthenticationService.Instance.SignedIn -= NextToMenu;
}
public void Login()
public async void Login()
{
username = usernameFieldLogin.text ;
password = paswordFieldLogin.text ;
AuthenticationManager.SigninUsernamePassword(username, password);
usernameLogin = usernameFieldLogin.text.Trim();
passwordLogin = paswordFieldLogin.text.Trim();
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()
{
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="provincy">The user's province or region.</param>
/// <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
{
@ -97,7 +97,7 @@ public static class AuthenticationManager
/// <param name="email">The user's email address.</param>
/// <param name="provincy">The user's province or region.</param>
/// <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
{

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]
public class SaveData
{
public string fileName = "SaveData";
public string playerName;
private readonly string defaultPlayerName = "Player";
public string agePlayer;
public int unlockLevel;
public float kesehatanGigiStatistik;
public float PenyakitGigiStatistik;
public bool[] isMateriKesehatanGigiComplete = new bool[4];
public bool[] isMateriPenyakitGigi1Complete= new bool[3];
public SaveData()
{
playerName = defaultPlayerName;
@ -35,7 +35,5 @@ public class SaveData
{
isMateriPenyakitGigi1Complete[i] = false;
}
}
}

View File

@ -2,6 +2,8 @@ using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks;
public class Enemy : MonoBehaviour
{
@ -14,6 +16,10 @@ public class Enemy : MonoBehaviour
public float damage;
public bool isBosStage2;
[SerializeField] private GameObject pastaGigi;
private SaveData saveData;
private void Start()
{
@ -35,12 +41,13 @@ public class Enemy : MonoBehaviour
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"))
{
GameObject bullet = other.gameObject;
bullet.gameObject.SetActive(false);
bullet.SetActive(false);
if (health >= 1)
{
health -= damage;
@ -49,31 +56,34 @@ public class Enemy : MonoBehaviour
{
pastaGigi.SetActive(true);
}
if (health <= 0)
{
ExecuteBosDeath();
await ExecuteBosDeath();
}
}
else
{
ExecuteBosDeath();
await ExecuteBosDeath();
}
}
}
void ExecuteBosDeath()
private async Task ExecuteBosDeath()
{
SaveData saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
if (isBosStage2)
{
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);
WinScreen.Open();
DataManager.instance.Save();
}
else
{
@ -81,6 +91,6 @@ public class Enemy : MonoBehaviour
QuizPopUp.Open();
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>
{
[SerializeField] private DataManager dataManager;
protected override void Awake()
{
base.Awake();
dataManager = DataManager.instance;
}
private void Start()
{
audioController.Instance.PlayBGM("Background Music", 0.5f);
@ -24,11 +17,6 @@ public class MainMenu : Menu<MainMenu>
yield return new WaitForSeconds(1);
}
private void LoadData()
{
dataManager.Load();
}
public void OnPlayPressed()
{
audioController.Instance.PlaySFX("TombolUmum", 0.5f);
@ -57,6 +45,7 @@ public class MainMenu : Menu<MainMenu>
public override void OnBackPressed()
{
audioController.Instance.PlaySFX("TombolClose", 0.5f);
AuthenticationManager.Signout();
Application.Quit();
}
}

View File

@ -31,6 +31,25 @@ public abstract class Menu<T> : Menu where T : Menu<T>
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()
{
int isFirst;
Debug.Log(Application.persistentDataPath);
if (menuParent == null)
@ -77,7 +78,10 @@ public class MenuManager : MonoBehaviour
Menu menuInstance = Instantiate(prefab, menuParent);
menuInstance.gameObject.SetActive(true); // Refresh the instance to prevent a null reference.
menuInstance.gameObject.SetActive(false);
if (prefab == mainMenuPrefabs)
if (prefab == auntMenuPrefabs)
{
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.Generic;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ProfileMenu : Menu<ProfileMenu>
{
[SerializeField] private DataManager dataManager;
private SaveData saveData;
[SerializeField] private TextMeshProUGUI namePlayer, agePlayer;
[SerializeField] private Image dataKesehatanGigiImage;
[SerializeField] private Image dataPenyakitGigiImage;
[SerializeField] private TextMeshProUGUI dataKesehatanGigiText;
[SerializeField] private TextMeshProUGUI dataPenyakitGigiText;
private void OnEnable()
{
StartCoroutine(DelayShowData());
LoadAndRefresh();
}
IEnumerator DelayShowData()
private async void LoadAndRefresh()
{
yield return new WaitForSeconds(1);
dataManager = DataManager.instance;
dataManager.Load();
namePlayer.text = dataManager.playerName;
agePlayer.text = dataManager.agePlayer + " " + "Tahun";
dataKesehatanGigiImage.fillAmount = dataManager.MateriKesehatanGigi / 100f;
dataPenyakitGigiImage.fillAmount = dataManager.MateriPenyakitGigi / 100f;
dataManager.Save();
var task = Cloudsave.SaveData(dataManager.saveData, "Bebas");
yield return task;
saveData = await Cloudsave.LoadData<SaveData>("DataPlayer");
if (saveData == null)
{
Debug.LogWarning("DataPlayer tidak ditemukan di cloud!");
return;
}
namePlayer.text = saveData.playerName;
agePlayer.text = saveData.agePlayer + " Tahun";
dataKesehatanGigiImage.fillAmount = (float)saveData.kesehatanGigiStatistik / 100f;
dataPenyakitGigiImage.fillAmount = (float)saveData.PenyakitGigiStatistik / 100f;
dataKesehatanGigiText.text = saveData.kesehatanGigiStatistik.ToString("F1");
dataPenyakitGigiText.text = saveData.PenyakitGigiStatistik.ToString("F1");
}
public override void OnBackPressed()
{
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()
{
audioController.Instance.PlaySFX("TombolUmum", 0.5f);

View File

@ -24,7 +24,6 @@ public class QuizPopUp : Menu<QuizPopUp>
[SerializeField] Image timerImage;
[SerializeField] TextMeshProUGUI timerText;
public GameManager gameManager;
public DataManager dataManager;
public bool isComplete = false;
@ -43,7 +42,6 @@ public class QuizPopUp : Menu<QuizPopUp>
private void OnEnable()
{
gameManager = FindObjectOfType<GameManager>();
dataManager = FindObjectOfType<DataManager>();
if (gameManager == null) return;
@ -196,7 +194,7 @@ public class QuizPopUp : Menu<QuizPopUp>
buttonImage.sprite = trueAnswerSprite;
// implement score ++;
isComplete = true;
StartCoroutine(DelayAfterAnswerTrue());
DelayAfterAnswerTrue();
}
@ -207,7 +205,6 @@ public class QuizPopUp : Menu<QuizPopUp>
buttonImage = answerButtons[index].GetComponent<Image>();
buttonImage.sprite = falseAnswerSprite;
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)
{
int checkData = gameManager.indexQuestion;
if (dataManager.isMateriKesehatanGigiComplete[checkData] == false)
if (checkData >= 0 && checkData < saveData.isMateriKesehatanGigiComplete.Length)
{
dataManager.isMateriKesehatanGigiComplete[checkData] = true;
dataManager.MateriKesehatanGigi += 20;
dataManager.Save();
if (!saveData.isMateriKesehatanGigiComplete[checkData])
{
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
{
int checkData = gameManager.indexQuestion;
if (dataManager.isMateriPenyakitGigi1Complete[checkData] == false)
if (checkData >= 0 && checkData < saveData.isMateriPenyakitGigi1Complete.Length)
{
dataManager.isMateriPenyakitGigi1Complete[checkData] = true;
dataManager.MateriPenyakitGigi += 25;
dataManager.Save();
if (!saveData.isMateriPenyakitGigi1Complete[checkData])
{
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);
dataManager.Save();
await Cloudsave.SaveData(saveData, "DataPlayer");
GameMenu.Open();
}
IEnumerator DelayAfterAnswerFalse()
{

View File

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

View File

@ -6,30 +6,15 @@ using UnityEngine.UI;
public class SettingsMenu : Menu<SettingsMenu>
{
private DataManager dataManager;
public bool isMusicOn = true;
public bool isSfxOn = true;
protected override void Awake()
{
base.Awake();
dataManager = DataManager.instance;
}
private void Start()
{
}
public override void OnBackPressed()
{
base.OnBackPressed();
audioController.Instance.PlaySFX("TombolClose", 0.5f);
if (dataManager != null)
{
dataManager.Save();
}
}
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
activeInputHandler: 0
windowsGamepadBackendHint: 0
cloudProjectId: c564a27f-9043-4e3d-a0b4-b056edbc5b3f
cloudProjectId: eb23755b-bad6-47c2-8913-d9a87307f7f0
framebufferDepthMemorylessMode: 0
qualitySettingsNames: []
projectName: ToothyV
organizationId: asuranimation
organizationId: shaviragirls
cloudEnabled: 0
legacyClampBlendShapeWeights: 0
playerDataPath: