├── .gitignore ├── Assets ├── Animation.meta ├── Animation │ ├── Coin.meta │ ├── Coin │ │ ├── coin_animator.controller │ │ ├── coin_animator.controller.meta │ │ ├── idle.anim │ │ └── idle.anim.meta │ ├── Player.meta │ └── Player │ │ ├── fall.anim │ │ ├── fall.anim.meta │ │ ├── idle.anim │ │ ├── idle.anim.meta │ │ ├── jump.anim │ │ ├── jump.anim.meta │ │ ├── player.controller │ │ ├── player.controller.meta │ │ ├── run.anim │ │ └── run.anim.meta ├── Art.meta ├── Art │ ├── TileAssets.meta │ ├── TileAssets │ │ ├── ground_0.asset │ │ ├── ground_0.asset.meta │ │ ├── ground_1.asset │ │ ├── ground_1.asset.meta │ │ ├── ground_10.asset │ │ ├── ground_10.asset.meta │ │ ├── ground_11.asset │ │ ├── ground_11.asset.meta │ │ ├── ground_12.asset │ │ ├── ground_12.asset.meta │ │ ├── ground_13.asset │ │ ├── ground_13.asset.meta │ │ ├── ground_14.asset │ │ ├── ground_14.asset.meta │ │ ├── ground_2.asset │ │ ├── ground_2.asset.meta │ │ ├── ground_3.asset │ │ ├── ground_3.asset.meta │ │ ├── ground_4.asset │ │ ├── ground_4.asset.meta │ │ ├── ground_5.asset │ │ ├── ground_5.asset.meta │ │ ├── ground_6.asset │ │ ├── ground_6.asset.meta │ │ ├── ground_7.asset │ │ ├── ground_7.asset.meta │ │ ├── ground_8.asset │ │ ├── ground_8.asset.meta │ │ ├── ground_9.asset │ │ └── ground_9.asset.meta │ ├── TilePalettes.meta │ ├── TilePalettes │ │ ├── general.prefab │ │ └── general.prefab.meta │ ├── background_shapes.png │ ├── background_shapes.png.meta │ ├── coin.png │ ├── coin.png.meta │ ├── ground.png │ ├── ground.png.meta │ ├── player.png │ └── player.png.meta ├── Input.meta ├── Input │ ├── Controls.inputactions │ └── Controls.inputactions.meta ├── Materials.meta ├── Materials │ ├── NoFriction.physicsMaterial2D │ └── NoFriction.physicsMaterial2D.meta ├── Prefabs.meta ├── Prefabs │ ├── ClearButton.prefab │ ├── ClearButton.prefab.meta │ ├── Coin.prefab │ ├── Coin.prefab.meta │ ├── DataPersistenceManager.prefab │ ├── DataPersistenceManager.prefab.meta │ ├── SaveSlot.prefab │ └── SaveSlot.prefab.meta ├── Scenes.meta ├── Scenes │ ├── MainMenu.unity │ ├── MainMenu.unity.meta │ ├── SampleScene.unity │ └── SampleScene.unity.meta ├── Scripts.meta ├── Scripts │ ├── Camera.meta │ ├── Camera │ │ ├── FollowTarget.cs │ │ └── FollowTarget.cs.meta │ ├── DataPersistence.meta │ ├── DataPersistence │ │ ├── Data.meta │ │ ├── Data │ │ │ ├── AttributesData.cs │ │ │ ├── AttributesData.cs.meta │ │ │ ├── GameData.cs │ │ │ └── GameData.cs.meta │ │ ├── DataPersistenceManager.cs │ │ ├── DataPersistenceManager.cs.meta │ │ ├── FileDataHandler.cs │ │ ├── FileDataHandler.cs.meta │ │ ├── IDataPersistence.cs │ │ ├── IDataPersistence.cs.meta │ │ ├── SerializableTypes.meta │ │ └── SerializableTypes │ │ │ ├── SerializableDictionary.cs │ │ │ └── SerializableDictionary.cs.meta │ ├── Events.meta │ ├── Events │ │ ├── GameEventsManager.cs │ │ └── GameEventsManager.cs.meta │ ├── Input.meta │ ├── Input │ │ ├── InputManager.cs │ │ └── InputManager.cs.meta │ ├── MainMenu.meta │ ├── MainMenu │ │ ├── ConfirmationPopupMenu.cs │ │ ├── ConfirmationPopupMenu.cs.meta │ │ ├── MainMenu.cs │ │ ├── MainMenu.cs.meta │ │ ├── Menu.cs │ │ ├── Menu.cs.meta │ │ ├── SaveSlot.cs │ │ ├── SaveSlot.cs.meta │ │ ├── SaveSlotsMenu.cs │ │ └── SaveSlotsMenu.cs.meta │ ├── Objects.meta │ ├── Objects │ │ ├── Coin.cs │ │ └── Coin.cs.meta │ ├── Player.meta │ ├── Player │ │ ├── CharacterController2D.cs │ │ └── CharacterController2D.cs.meta │ ├── ScriptableObjects.meta │ ├── ScriptableObjects │ │ ├── AttributesScriptableObject.cs │ │ ├── AttributesScriptableObject.cs.meta │ │ ├── PlayerAttributes.asset │ │ └── PlayerAttributes.asset.meta │ ├── UI.meta │ └── UI │ │ ├── CoinsCollectedText.cs │ │ ├── CoinsCollectedText.cs.meta │ │ ├── DeathCountText.cs │ │ └── DeathCountText.cs.meta ├── TextMesh Pro.meta └── TextMesh Pro │ ├── Documentation.meta │ ├── Documentation │ ├── TextMesh Pro User Guide 2016.pdf │ └── TextMesh Pro User Guide 2016.pdf.meta │ ├── Fonts.meta │ ├── Fonts │ ├── LiberationSans - OFL.txt │ ├── LiberationSans - OFL.txt.meta │ ├── LiberationSans.ttf │ └── LiberationSans.ttf.meta │ ├── Resources.meta │ ├── Resources │ ├── Fonts & Materials.meta │ ├── Fonts & Materials │ │ ├── LiberationSans SDF - Drop Shadow.mat │ │ ├── LiberationSans SDF - Drop Shadow.mat.meta │ │ ├── LiberationSans SDF - Fallback.asset │ │ ├── LiberationSans SDF - Fallback.asset.meta │ │ ├── LiberationSans SDF - Outline.mat │ │ ├── LiberationSans SDF - Outline.mat.meta │ │ ├── LiberationSans SDF.asset │ │ └── LiberationSans SDF.asset.meta │ ├── LineBreaking Following Characters.txt │ ├── LineBreaking Following Characters.txt.meta │ ├── LineBreaking Leading Characters.txt │ ├── LineBreaking Leading Characters.txt.meta │ ├── Sprite Assets.meta │ ├── Sprite Assets │ │ ├── EmojiOne.asset │ │ └── EmojiOne.asset.meta │ ├── Style Sheets.meta │ ├── Style Sheets │ │ ├── Default Style Sheet.asset │ │ └── Default Style Sheet.asset.meta │ ├── TMP Settings.asset │ └── TMP Settings.asset.meta │ ├── Shaders.meta │ ├── Shaders │ ├── TMP_Bitmap-Custom-Atlas.shader │ ├── TMP_Bitmap-Custom-Atlas.shader.meta │ ├── TMP_Bitmap-Mobile.shader │ ├── TMP_Bitmap-Mobile.shader.meta │ ├── TMP_Bitmap.shader │ ├── TMP_Bitmap.shader.meta │ ├── TMP_SDF Overlay.shader │ ├── TMP_SDF Overlay.shader.meta │ ├── TMP_SDF SSD.shader │ ├── TMP_SDF SSD.shader.meta │ ├── TMP_SDF-Mobile Masking.shader │ ├── TMP_SDF-Mobile Masking.shader.meta │ ├── TMP_SDF-Mobile Overlay.shader │ ├── TMP_SDF-Mobile Overlay.shader.meta │ ├── TMP_SDF-Mobile SSD.shader │ ├── TMP_SDF-Mobile SSD.shader.meta │ ├── TMP_SDF-Mobile.shader │ ├── TMP_SDF-Mobile.shader.meta │ ├── TMP_SDF-Surface-Mobile.shader │ ├── TMP_SDF-Surface-Mobile.shader.meta │ ├── TMP_SDF-Surface.shader │ ├── TMP_SDF-Surface.shader.meta │ ├── TMP_SDF.shader │ ├── TMP_SDF.shader.meta │ ├── TMP_Sprite.shader │ ├── TMP_Sprite.shader.meta │ ├── TMPro.cginc │ ├── TMPro.cginc.meta │ ├── TMPro_Mobile.cginc │ ├── TMPro_Mobile.cginc.meta │ ├── TMPro_Properties.cginc │ ├── TMPro_Properties.cginc.meta │ ├── TMPro_Surface.cginc │ └── TMPro_Surface.cginc.meta │ ├── Sprites.meta │ └── Sprites │ ├── EmojiOne Attribution.txt │ ├── EmojiOne Attribution.txt.meta │ ├── EmojiOne.json │ ├── EmojiOne.json.meta │ ├── EmojiOne.png │ └── EmojiOne.png.meta ├── LICENSE.md ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.suo 39 | *.tmp 40 | *.user 41 | *.userprefs 42 | *.pidb 43 | *.booproj 44 | *.svd 45 | *.pdb 46 | *.mdb 47 | *.opendb 48 | *.VC.db 49 | 50 | # Unity3D generated meta files 51 | *.pidb.meta 52 | *.pdb.meta 53 | *.mdb.meta 54 | 55 | # Unity3D generated file on crash reports 56 | sysinfo.txt 57 | 58 | # Builds 59 | *.apk 60 | *.aab 61 | *.unitypackage 62 | 63 | # Crashlytics generated file 64 | crashlytics-build.properties 65 | 66 | # Packed Addressables 67 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 68 | 69 | # Temporary auto-generated Android Assets 70 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 71 | /[Aa]ssets/[Ss]treamingAssets/aa/* 72 | 73 | .vsconfig 74 | .vscode/ -------------------------------------------------------------------------------- /Assets/Animation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9eedc339c10a01d4390716c62e782eb9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Coin.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7850bd9396a4b674d8ca35c92e47980c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Coin/coin_animator.controller: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1102 &-3834441255194321052 4 | AnimatorState: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 1 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: idle 11 | m_Speed: 1.5 12 | m_CycleOffset: 0 13 | m_Transitions: [] 14 | m_StateMachineBehaviours: [] 15 | m_Position: {x: 50, y: 50, z: 0} 16 | m_IKOnFeet: 0 17 | m_WriteDefaultValues: 1 18 | m_Mirror: 0 19 | m_SpeedParameterActive: 0 20 | m_MirrorParameterActive: 0 21 | m_CycleOffsetParameterActive: 0 22 | m_TimeParameterActive: 0 23 | m_Motion: {fileID: 7400000, guid: cae44c4925d196e4f8544125223dd775, type: 2} 24 | m_Tag: 25 | m_SpeedParameter: 26 | m_MirrorParameter: 27 | m_CycleOffsetParameter: 28 | m_TimeParameter: 29 | --- !u!91 &9100000 30 | AnimatorController: 31 | m_ObjectHideFlags: 0 32 | m_CorrespondingSourceObject: {fileID: 0} 33 | m_PrefabInstance: {fileID: 0} 34 | m_PrefabAsset: {fileID: 0} 35 | m_Name: coin_animator 36 | serializedVersion: 5 37 | m_AnimatorParameters: [] 38 | m_AnimatorLayers: 39 | - serializedVersion: 5 40 | m_Name: Base Layer 41 | m_StateMachine: {fileID: 6929012664114459973} 42 | m_Mask: {fileID: 0} 43 | m_Motions: [] 44 | m_Behaviours: [] 45 | m_BlendingMode: 0 46 | m_SyncedLayerIndex: -1 47 | m_DefaultWeight: 0 48 | m_IKPass: 0 49 | m_SyncedLayerAffectsTiming: 0 50 | m_Controller: {fileID: 9100000} 51 | --- !u!1107 &6929012664114459973 52 | AnimatorStateMachine: 53 | serializedVersion: 6 54 | m_ObjectHideFlags: 1 55 | m_CorrespondingSourceObject: {fileID: 0} 56 | m_PrefabInstance: {fileID: 0} 57 | m_PrefabAsset: {fileID: 0} 58 | m_Name: Base Layer 59 | m_ChildStates: 60 | - serializedVersion: 1 61 | m_State: {fileID: -3834441255194321052} 62 | m_Position: {x: 330, y: 120, z: 0} 63 | m_ChildStateMachines: [] 64 | m_AnyStateTransitions: [] 65 | m_EntryTransitions: [] 66 | m_StateMachineTransitions: {} 67 | m_StateMachineBehaviours: [] 68 | m_AnyStatePosition: {x: 50, y: 20, z: 0} 69 | m_EntryPosition: {x: 50, y: 120, z: 0} 70 | m_ExitPosition: {x: 800, y: 120, z: 0} 71 | m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} 72 | m_DefaultState: {fileID: -3834441255194321052} 73 | -------------------------------------------------------------------------------- /Assets/Animation/Coin/coin_animator.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b4935c02c3dd6604fb68f69ce2cb1b49 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 9100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Coin/idle.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: idle 10 | serializedVersion: 6 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: [] 19 | m_FloatCurves: [] 20 | m_PPtrCurves: 21 | - curve: 22 | - time: 0 23 | value: {fileID: 7675826601332790545, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 24 | - time: 0.16666667 25 | value: {fileID: -675104096977794455, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 26 | - time: 0.33333334 27 | value: {fileID: -4412926668834298731, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 28 | - time: 0.5 29 | value: {fileID: -4862007459847594908, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 30 | - time: 0.6666667 31 | value: {fileID: -7914957615168794202, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 32 | - time: 0.8333333 33 | value: {fileID: 2278881825021241808, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 34 | - time: 1 35 | value: {fileID: 1763547749914876530, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 36 | - time: 1.1666666 37 | value: {fileID: 5999283557275819326, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 38 | - time: 1.3166667 39 | value: {fileID: 7675826601332790545, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 40 | attribute: m_Sprite 41 | path: 42 | classID: 212 43 | script: {fileID: 0} 44 | m_SampleRate: 60 45 | m_WrapMode: 0 46 | m_Bounds: 47 | m_Center: {x: 0, y: 0, z: 0} 48 | m_Extent: {x: 0, y: 0, z: 0} 49 | m_ClipBindingConstant: 50 | genericBindings: 51 | - serializedVersion: 2 52 | path: 0 53 | attribute: 0 54 | script: {fileID: 0} 55 | typeID: 212 56 | customType: 23 57 | isPPtrCurve: 1 58 | pptrCurveMapping: 59 | - {fileID: 7675826601332790545, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 60 | - {fileID: -675104096977794455, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 61 | - {fileID: -4412926668834298731, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 62 | - {fileID: -4862007459847594908, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 63 | - {fileID: -7914957615168794202, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 64 | - {fileID: 2278881825021241808, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 65 | - {fileID: 1763547749914876530, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 66 | - {fileID: 5999283557275819326, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 67 | - {fileID: 7675826601332790545, guid: f81afbcf7ed12ef4db0ccc7877c13460, type: 3} 68 | m_AnimationClipSettings: 69 | serializedVersion: 2 70 | m_AdditiveReferencePoseClip: {fileID: 0} 71 | m_AdditiveReferencePoseTime: 0 72 | m_StartTime: 0 73 | m_StopTime: 1.3333334 74 | m_OrientationOffsetY: 0 75 | m_Level: 0 76 | m_CycleOffset: 0 77 | m_HasAdditiveReferencePose: 0 78 | m_LoopTime: 1 79 | m_LoopBlend: 0 80 | m_LoopBlendOrientation: 0 81 | m_LoopBlendPositionY: 0 82 | m_LoopBlendPositionXZ: 0 83 | m_KeepOriginalOrientation: 0 84 | m_KeepOriginalPositionY: 1 85 | m_KeepOriginalPositionXZ: 0 86 | m_HeightFromFeet: 0 87 | m_Mirror: 0 88 | m_EditorCurves: [] 89 | m_EulerEditorCurves: [] 90 | m_HasGenericRootTransform: 0 91 | m_HasMotionFloatCurves: 0 92 | m_Events: [] 93 | -------------------------------------------------------------------------------- /Assets/Animation/Coin/idle.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cae44c4925d196e4f8544125223dd775 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 7400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1e522aaee1f94a43b645bb6088fdfc2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player/fall.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: fall 10 | serializedVersion: 6 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: [] 19 | m_FloatCurves: [] 20 | m_PPtrCurves: 21 | - curve: 22 | - time: 0 23 | value: {fileID: 5602337906906987636, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 24 | attribute: m_Sprite 25 | path: 26 | classID: 212 27 | script: {fileID: 0} 28 | m_SampleRate: 60 29 | m_WrapMode: 0 30 | m_Bounds: 31 | m_Center: {x: 0, y: 0, z: 0} 32 | m_Extent: {x: 0, y: 0, z: 0} 33 | m_ClipBindingConstant: 34 | genericBindings: 35 | - serializedVersion: 2 36 | path: 0 37 | attribute: 0 38 | script: {fileID: 0} 39 | typeID: 212 40 | customType: 23 41 | isPPtrCurve: 1 42 | pptrCurveMapping: 43 | - {fileID: 5602337906906987636, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 44 | m_AnimationClipSettings: 45 | serializedVersion: 2 46 | m_AdditiveReferencePoseClip: {fileID: 0} 47 | m_AdditiveReferencePoseTime: 0 48 | m_StartTime: 0 49 | m_StopTime: 0.016666668 50 | m_OrientationOffsetY: 0 51 | m_Level: 0 52 | m_CycleOffset: 0 53 | m_HasAdditiveReferencePose: 0 54 | m_LoopTime: 0 55 | m_LoopBlend: 0 56 | m_LoopBlendOrientation: 0 57 | m_LoopBlendPositionY: 0 58 | m_LoopBlendPositionXZ: 0 59 | m_KeepOriginalOrientation: 0 60 | m_KeepOriginalPositionY: 1 61 | m_KeepOriginalPositionXZ: 0 62 | m_HeightFromFeet: 0 63 | m_Mirror: 0 64 | m_EditorCurves: [] 65 | m_EulerEditorCurves: [] 66 | m_HasGenericRootTransform: 0 67 | m_HasMotionFloatCurves: 0 68 | m_Events: [] 69 | -------------------------------------------------------------------------------- /Assets/Animation/Player/fall.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60bbd710e1f909c42a88f8b3c9927388 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player/idle.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: idle 10 | serializedVersion: 6 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: [] 19 | m_FloatCurves: [] 20 | m_PPtrCurves: 21 | - curve: 22 | - time: 0 23 | value: {fileID: 4334783836991956000, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 24 | - time: 0.16666667 25 | value: {fileID: 7388399842426930641, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 26 | - time: 0.33333334 27 | value: {fileID: 6757282713640645180, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 28 | - time: 0.5 29 | value: {fileID: -6781412095145881161, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 30 | - time: 0.6666667 31 | value: {fileID: 4334783836991956000, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 32 | attribute: m_Sprite 33 | path: 34 | classID: 212 35 | script: {fileID: 0} 36 | m_SampleRate: 60 37 | m_WrapMode: 0 38 | m_Bounds: 39 | m_Center: {x: 0, y: 0, z: 0} 40 | m_Extent: {x: 0, y: 0, z: 0} 41 | m_ClipBindingConstant: 42 | genericBindings: 43 | - serializedVersion: 2 44 | path: 0 45 | attribute: 0 46 | script: {fileID: 0} 47 | typeID: 212 48 | customType: 23 49 | isPPtrCurve: 1 50 | pptrCurveMapping: 51 | - {fileID: 4334783836991956000, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 52 | - {fileID: 7388399842426930641, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 53 | - {fileID: 6757282713640645180, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 54 | - {fileID: -6781412095145881161, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 55 | - {fileID: 4334783836991956000, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 56 | m_AnimationClipSettings: 57 | serializedVersion: 2 58 | m_AdditiveReferencePoseClip: {fileID: 0} 59 | m_AdditiveReferencePoseTime: 0 60 | m_StartTime: 0 61 | m_StopTime: 0.68333334 62 | m_OrientationOffsetY: 0 63 | m_Level: 0 64 | m_CycleOffset: 0 65 | m_HasAdditiveReferencePose: 0 66 | m_LoopTime: 1 67 | m_LoopBlend: 0 68 | m_LoopBlendOrientation: 0 69 | m_LoopBlendPositionY: 0 70 | m_LoopBlendPositionXZ: 0 71 | m_KeepOriginalOrientation: 0 72 | m_KeepOriginalPositionY: 1 73 | m_KeepOriginalPositionXZ: 0 74 | m_HeightFromFeet: 0 75 | m_Mirror: 0 76 | m_EditorCurves: [] 77 | m_EulerEditorCurves: [] 78 | m_HasGenericRootTransform: 0 79 | m_HasMotionFloatCurves: 0 80 | m_Events: [] 81 | -------------------------------------------------------------------------------- /Assets/Animation/Player/idle.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29cfb9a4397343c4194b6cca50e04427 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player/jump.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: jump 10 | serializedVersion: 6 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: [] 19 | m_FloatCurves: [] 20 | m_PPtrCurves: 21 | - curve: 22 | - time: 0 23 | value: {fileID: -1205440766039775075, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 24 | attribute: m_Sprite 25 | path: 26 | classID: 212 27 | script: {fileID: 0} 28 | m_SampleRate: 60 29 | m_WrapMode: 0 30 | m_Bounds: 31 | m_Center: {x: 0, y: 0, z: 0} 32 | m_Extent: {x: 0, y: 0, z: 0} 33 | m_ClipBindingConstant: 34 | genericBindings: 35 | - serializedVersion: 2 36 | path: 0 37 | attribute: 0 38 | script: {fileID: 0} 39 | typeID: 212 40 | customType: 23 41 | isPPtrCurve: 1 42 | pptrCurveMapping: 43 | - {fileID: -1205440766039775075, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 44 | m_AnimationClipSettings: 45 | serializedVersion: 2 46 | m_AdditiveReferencePoseClip: {fileID: 0} 47 | m_AdditiveReferencePoseTime: 0 48 | m_StartTime: 0 49 | m_StopTime: 0.016666668 50 | m_OrientationOffsetY: 0 51 | m_Level: 0 52 | m_CycleOffset: 0 53 | m_HasAdditiveReferencePose: 0 54 | m_LoopTime: 0 55 | m_LoopBlend: 0 56 | m_LoopBlendOrientation: 0 57 | m_LoopBlendPositionY: 0 58 | m_LoopBlendPositionXZ: 0 59 | m_KeepOriginalOrientation: 0 60 | m_KeepOriginalPositionY: 1 61 | m_KeepOriginalPositionXZ: 0 62 | m_HeightFromFeet: 0 63 | m_Mirror: 0 64 | m_EditorCurves: [] 65 | m_EulerEditorCurves: [] 66 | m_HasGenericRootTransform: 0 67 | m_HasMotionFloatCurves: 0 68 | m_Events: [] 69 | -------------------------------------------------------------------------------- /Assets/Animation/Player/jump.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 158e08861d093b040bbf154ce8d26cfd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player/player.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6edf0d62fc8f7c149b2fdef67cca9ed6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animation/Player/run.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: run 10 | serializedVersion: 6 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: [] 19 | m_FloatCurves: [] 20 | m_PPtrCurves: 21 | - curve: 22 | - time: 0 23 | value: {fileID: 1755772209161902963, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 24 | - time: 0.16666667 25 | value: {fileID: 5865078278364869351, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 26 | - time: 0.33333334 27 | value: {fileID: -2023923573111878767, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 28 | - time: 0.5 29 | value: {fileID: -540375121143967267, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 30 | - time: 0.6666667 31 | value: {fileID: 1755772209161902963, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 32 | attribute: m_Sprite 33 | path: 34 | classID: 212 35 | script: {fileID: 0} 36 | m_SampleRate: 60 37 | m_WrapMode: 0 38 | m_Bounds: 39 | m_Center: {x: 0, y: 0, z: 0} 40 | m_Extent: {x: 0, y: 0, z: 0} 41 | m_ClipBindingConstant: 42 | genericBindings: 43 | - serializedVersion: 2 44 | path: 0 45 | attribute: 0 46 | script: {fileID: 0} 47 | typeID: 212 48 | customType: 23 49 | isPPtrCurve: 1 50 | pptrCurveMapping: 51 | - {fileID: 1755772209161902963, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 52 | - {fileID: 5865078278364869351, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 53 | - {fileID: -2023923573111878767, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 54 | - {fileID: -540375121143967267, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 55 | - {fileID: 1755772209161902963, guid: f7b4fa35e62239a43a04938d71ed06c1, type: 3} 56 | m_AnimationClipSettings: 57 | serializedVersion: 2 58 | m_AdditiveReferencePoseClip: {fileID: 0} 59 | m_AdditiveReferencePoseTime: 0 60 | m_StartTime: 0 61 | m_StopTime: 0.68333334 62 | m_OrientationOffsetY: 0 63 | m_Level: 0 64 | m_CycleOffset: 0 65 | m_HasAdditiveReferencePose: 0 66 | m_LoopTime: 1 67 | m_LoopBlend: 0 68 | m_LoopBlendOrientation: 0 69 | m_LoopBlendPositionY: 0 70 | m_LoopBlendPositionXZ: 0 71 | m_KeepOriginalOrientation: 0 72 | m_KeepOriginalPositionY: 1 73 | m_KeepOriginalPositionXZ: 0 74 | m_HeightFromFeet: 0 75 | m_Mirror: 0 76 | m_EditorCurves: [] 77 | m_EulerEditorCurves: [] 78 | m_HasGenericRootTransform: 0 79 | m_HasMotionFloatCurves: 0 80 | m_Events: [] 81 | -------------------------------------------------------------------------------- /Assets/Animation/Player/run.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf0080d9d5502194b80b37c239b236a7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bda7084ca7c9a341ac36f58ff78d38f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69d3561997b9f264dabac7e0b942bf27 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_0.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_0 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -3878557786174838139, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_0.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e91b873f2c626354f916e6d5c2027f4b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_1 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -4419227343285247731, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4333e18cfd677a14a9dfc55fb060bf31 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_10.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_10 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 1481100579729305086, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_10.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27ec3723c591bea49be4d84c905d7b45 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_11.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_11 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 1363345801621341485, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_11.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64a94388be5b7754583382c7d6b42513 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_12.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_12 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 3809333609213854930, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_12.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eddb81e25d9daca4ab6e31a54f8e3fdc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_13.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_13 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -7568449251786254984, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_13.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f67f244135b57e489d401e7e289fecc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_14.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_14 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -9118316241333876284, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_14.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbde8c5bcf2da27458680acdba63db6d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_2 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -1977380741081267030, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: beb77bcb3349fbb4a81d052c689b326e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_3 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 2270332835960527861, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8dcf492f515abc941a7f3d5f03c5e8e0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_4.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_4 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 5602472716659199906, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_4.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b6a9043ff9bf294c90f8b59d0d661cf 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_5.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_5 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: -5561606140109812095, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_5.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a69432f798e073a4f893cbdb3b19fdc8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_6.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_6 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 1269115465126947162, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_6.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b77641a57643e9c43ae581e7fe09765d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_7.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_7 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 6922181128366143233, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_7.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1169ce2c9efeca24dae04dea7d9d8c03 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_8.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_8 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 6955847195254428025, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_8.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3295ebb8e8305584f83f56acbdeee542 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_9.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: ground_9 14 | m_EditorClassIdentifier: 15 | m_Sprite: {fileID: 3215127950514980561, guid: 34170af112f993f4ea82dad6431f8f10, type: 3} 16 | m_Color: {r: 1, g: 1, b: 1, a: 1} 17 | m_Transform: 18 | e00: 1 19 | e01: 0 20 | e02: 0 21 | e03: 0 22 | e10: 0 23 | e11: 1 24 | e12: 0 25 | e13: 0 26 | e20: 0 27 | e21: 0 28 | e22: 1 29 | e23: 0 30 | e30: 0 31 | e31: 0 32 | e32: 0 33 | e33: 1 34 | m_InstancedGameObject: {fileID: 0} 35 | m_Flags: 1 36 | m_ColliderType: 1 37 | -------------------------------------------------------------------------------- /Assets/Art/TileAssets/ground_9.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a909cb2d22341547b77514884935d7d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TilePalettes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a149a5af3c4728b4f9013ccdb5ddbc9e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Art/TilePalettes/general.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0f379be13ce2854e950a49b84490f0b 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Art/background_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shapedbyrainstudios/save-load-system/7af48ac42932475f1e7be97cc7eddcc9524f7781/Assets/Art/background_shapes.png -------------------------------------------------------------------------------- /Assets/Art/background_shapes.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17e7c7960aa78a04083c66bca2a67279 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 2048 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 5e97eb03825dee720800000000000000 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Art/coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shapedbyrainstudios/save-load-system/7af48ac42932475f1e7be97cc7eddcc9524f7781/Assets/Art/coin.png -------------------------------------------------------------------------------- /Assets/Art/ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shapedbyrainstudios/save-load-system/7af48ac42932475f1e7be97cc7eddcc9524f7781/Assets/Art/ground.png -------------------------------------------------------------------------------- /Assets/Art/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shapedbyrainstudios/save-load-system/7af48ac42932475f1e7be97cc7eddcc9524f7781/Assets/Art/player.png -------------------------------------------------------------------------------- /Assets/Input.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6be5f78e02fc634fa7b02bed1e5cc89 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Input/Controls.inputactions: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Controls", 3 | "maps": [ 4 | { 5 | "name": "game", 6 | "id": "c6a22e79-45bb-41d5-bee1-058fedc800d9", 7 | "actions": [ 8 | { 9 | "name": "jump", 10 | "type": "Button", 11 | "id": "b64f28e5-6f0c-4370-9f80-2a9a33c0fe95", 12 | "expectedControlType": "Button", 13 | "processors": "", 14 | "interactions": "" 15 | }, 16 | { 17 | "name": "move", 18 | "type": "Value", 19 | "id": "7ea5ec66-e7df-4d26-9425-2b7f30cc5d4b", 20 | "expectedControlType": "Vector2", 21 | "processors": "", 22 | "interactions": "" 23 | }, 24 | { 25 | "name": "exit", 26 | "type": "Button", 27 | "id": "89d068cc-bd9d-488b-bc9e-9ef4b2e4f5fe", 28 | "expectedControlType": "Button", 29 | "processors": "", 30 | "interactions": "" 31 | } 32 | ], 33 | "bindings": [ 34 | { 35 | "name": "", 36 | "id": "2d1d03bb-afc3-4197-9957-6c060a0459e4", 37 | "path": "/space", 38 | "interactions": "", 39 | "processors": "", 40 | "groups": "", 41 | "action": "jump", 42 | "isComposite": false, 43 | "isPartOfComposite": false 44 | }, 45 | { 46 | "name": "arrows", 47 | "id": "81b563da-b7e3-4c3a-9590-ad7c4c355bda", 48 | "path": "2DVector", 49 | "interactions": "", 50 | "processors": "", 51 | "groups": "", 52 | "action": "move", 53 | "isComposite": true, 54 | "isPartOfComposite": false 55 | }, 56 | { 57 | "name": "up", 58 | "id": "7620b223-c21a-4b2b-8cde-fb64596c76da", 59 | "path": "/upArrow", 60 | "interactions": "", 61 | "processors": "", 62 | "groups": "", 63 | "action": "move", 64 | "isComposite": false, 65 | "isPartOfComposite": true 66 | }, 67 | { 68 | "name": "down", 69 | "id": "ed21fc11-d82e-4786-a868-69cc83cf151b", 70 | "path": "/downArrow", 71 | "interactions": "", 72 | "processors": "", 73 | "groups": "", 74 | "action": "move", 75 | "isComposite": false, 76 | "isPartOfComposite": true 77 | }, 78 | { 79 | "name": "left", 80 | "id": "636c99cf-e9d2-45ab-b8ee-c8cc31b8c425", 81 | "path": "/leftArrow", 82 | "interactions": "", 83 | "processors": "", 84 | "groups": "", 85 | "action": "move", 86 | "isComposite": false, 87 | "isPartOfComposite": true 88 | }, 89 | { 90 | "name": "right", 91 | "id": "f260b104-80cb-423d-8e0c-34f9983e420b", 92 | "path": "/rightArrow", 93 | "interactions": "", 94 | "processors": "", 95 | "groups": "", 96 | "action": "move", 97 | "isComposite": false, 98 | "isPartOfComposite": true 99 | }, 100 | { 101 | "name": "wasd", 102 | "id": "a60f0f30-4d69-43ad-98ef-9c05f7bf4052", 103 | "path": "2DVector", 104 | "interactions": "", 105 | "processors": "", 106 | "groups": "", 107 | "action": "move", 108 | "isComposite": true, 109 | "isPartOfComposite": false 110 | }, 111 | { 112 | "name": "up", 113 | "id": "5ae78d78-c055-44ae-a62b-6e4aeb8fb67a", 114 | "path": "/w", 115 | "interactions": "", 116 | "processors": "", 117 | "groups": "", 118 | "action": "move", 119 | "isComposite": false, 120 | "isPartOfComposite": true 121 | }, 122 | { 123 | "name": "down", 124 | "id": "26910b1d-a2d3-4b57-a8aa-f5a413127f63", 125 | "path": "/s", 126 | "interactions": "", 127 | "processors": "", 128 | "groups": "", 129 | "action": "move", 130 | "isComposite": false, 131 | "isPartOfComposite": true 132 | }, 133 | { 134 | "name": "left", 135 | "id": "e86e50cb-8d60-4916-b9d0-841a11ea88a2", 136 | "path": "/a", 137 | "interactions": "", 138 | "processors": "", 139 | "groups": "", 140 | "action": "move", 141 | "isComposite": false, 142 | "isPartOfComposite": true 143 | }, 144 | { 145 | "name": "right", 146 | "id": "48dd05b5-4f5f-4591-b5ee-aac404825a9d", 147 | "path": "/d", 148 | "interactions": "", 149 | "processors": "", 150 | "groups": "", 151 | "action": "move", 152 | "isComposite": false, 153 | "isPartOfComposite": true 154 | }, 155 | { 156 | "name": "", 157 | "id": "1d5027ae-ac49-4b57-a749-9f1031ae3e56", 158 | "path": "/escape", 159 | "interactions": "", 160 | "processors": "", 161 | "groups": "", 162 | "action": "exit", 163 | "isComposite": false, 164 | "isPartOfComposite": false 165 | } 166 | ] 167 | } 168 | ], 169 | "controlSchemes": [] 170 | } -------------------------------------------------------------------------------- /Assets/Input/Controls.inputactions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 56c7d866934b318499a5ad440c7675b0 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} 11 | generateWrapperCode: 0 12 | wrapperCodePath: 13 | wrapperClassName: 14 | wrapperCodeNamespace: 15 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85dd8a07a400fce4bba83702bed7cec8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/NoFriction.physicsMaterial2D: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!62 &6200000 4 | PhysicsMaterial2D: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: NoFriction 10 | friction: 0 11 | bounciness: 0 12 | -------------------------------------------------------------------------------- /Assets/Materials/NoFriction.physicsMaterial2D.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3dfa6b09bb504c46a2b70de29ba5d07 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 15ab080c0e9ca8c4596b50f498f75b42 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/ClearButton.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8bdce4072a77bb4a9c02f42455d0de4 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/Coin.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23aef64010e11264082c3e785f37e8e3 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/DataPersistenceManager.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &7604111838645976508 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 7604111838645976509} 12 | - component: {fileID: 7604111838645976510} 13 | m_Layer: 0 14 | m_Name: DataPersistenceManager 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!4 &7604111838645976509 21 | Transform: 22 | m_ObjectHideFlags: 0 23 | m_CorrespondingSourceObject: {fileID: 0} 24 | m_PrefabInstance: {fileID: 0} 25 | m_PrefabAsset: {fileID: 0} 26 | m_GameObject: {fileID: 7604111838645976508} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: [] 31 | m_Father: {fileID: 0} 32 | m_RootOrder: 0 33 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 34 | --- !u!114 &7604111838645976510 35 | MonoBehaviour: 36 | m_ObjectHideFlags: 0 37 | m_CorrespondingSourceObject: {fileID: 0} 38 | m_PrefabInstance: {fileID: 0} 39 | m_PrefabAsset: {fileID: 0} 40 | m_GameObject: {fileID: 7604111838645976508} 41 | m_Enabled: 1 42 | m_EditorHideFlags: 0 43 | m_Script: {fileID: 11500000, guid: a43c513eda07bf94db46b159ebbc8b51, type: 3} 44 | m_Name: 45 | m_EditorClassIdentifier: 46 | initializeDataIfNull: 0 47 | fileName: data.game 48 | useEncryption: 0 49 | -------------------------------------------------------------------------------- /Assets/Prefabs/DataPersistenceManager.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85514a777ebab0f49aca60120c6d228c 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/SaveSlot.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f7621cc88d43894e800a320ee4d7ac5 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d02e11b7bbafaa249b0c32e9408d90d2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/MainMenu.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa348a55f0fe8cc46bf8aa4b4860f6ef 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cda990e2423bbf4892e6590ba056729 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e904aeaffe9fd940bed55862d500cfd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Camera.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74e2ad4355c817e4d9aaff5bfa6db95a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Camera/FollowTarget.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // This script can be used to match the positional values of a 4 | // target transform. It's meant to be attached to the main camera 5 | // so that the camera follows the player (or whatever the target is). 6 | public class FollowTarget : MonoBehaviour 7 | { 8 | [Header("Transform to Follow")] 9 | [SerializeField] private Transform targetTransform; 10 | 11 | [Header("Configuration")] 12 | [SerializeField] private bool followX = true; 13 | [SerializeField] private bool followY = true; 14 | [SerializeField] private Vector2 offset = Vector2.zero; 15 | 16 | private Transform originalTargetTransform; 17 | 18 | private void Start() 19 | { 20 | originalTargetTransform = targetTransform; 21 | } 22 | 23 | private void LateUpdate() 24 | { 25 | // if we don't have a target transform, don't update 26 | if (targetTransform == null) 27 | { 28 | return; 29 | } 30 | 31 | float newPosX = this.transform.position.x; 32 | float newPosY = this.transform.position.y; 33 | if (followX) 34 | { 35 | newPosX = targetTransform.position.x + offset.x; 36 | } 37 | if (followY) 38 | { 39 | newPosY = targetTransform.position.y + offset.y; 40 | } 41 | this.transform.position = new Vector3(newPosX, newPosY, this.transform.position.z); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /Assets/Scripts/Camera/FollowTarget.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1abaf092c561597448dddaea10cd539e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b09dfde43a37164d9894f01d3e77ced 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/Data.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f1c7553ca7b3bb4399eab9e93b9a6ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/Data/AttributesData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class AttributesData 7 | { 8 | public int vitality; 9 | public int strength; 10 | public int intellect; 11 | public int endurance; 12 | 13 | public AttributesData() 14 | { 15 | this.vitality = 1; 16 | this.strength = 1; 17 | this.intellect = 1; 18 | this.endurance = 1; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/Data/AttributesData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bcd40c816f3fb24a8aa90a6438d53a0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/Data/GameData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class GameData 7 | { 8 | public long lastUpdated; 9 | public int deathCount; 10 | public Vector3 playerPosition; 11 | public SerializableDictionary coinsCollected; 12 | public AttributesData playerAttributesData; 13 | 14 | // the values defined in this constructor will be the default values 15 | // the game starts with when there's no data to load 16 | public GameData() 17 | { 18 | this.deathCount = 0; 19 | playerPosition = Vector3.zero; 20 | coinsCollected = new SerializableDictionary(); 21 | playerAttributesData = new AttributesData(); 22 | } 23 | 24 | public int GetPercentageComplete() 25 | { 26 | // figure out how many coins we've collected 27 | int totalCollected = 0; 28 | foreach (bool collected in coinsCollected.Values) 29 | { 30 | if (collected) 31 | { 32 | totalCollected++; 33 | } 34 | } 35 | 36 | // ensure we don't divide by 0 when calculating the percentage 37 | int percentageCompleted = -1; 38 | if (coinsCollected.Count != 0) 39 | { 40 | percentageCompleted = (totalCollected * 100 / coinsCollected.Count); 41 | } 42 | return percentageCompleted; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/Data/GameData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89cbdf7a2dcd8ab40a929072c7493273 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/DataPersistenceManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System.Linq; 5 | using UnityEngine.SceneManagement; 6 | 7 | public class DataPersistenceManager : MonoBehaviour 8 | { 9 | [Header("Debugging")] 10 | [SerializeField] private bool disableDataPersistence = false; 11 | [SerializeField] private bool initializeDataIfNull = false; 12 | [SerializeField] private bool overrideSelectedProfileId = false; 13 | [SerializeField] private string testSelectedProfileId = "test"; 14 | 15 | [Header("File Storage Config")] 16 | [SerializeField] private string fileName; 17 | [SerializeField] private bool useEncryption; 18 | 19 | [Header("Auto Saving Configuration")] 20 | [SerializeField] private float autoSaveTimeSeconds = 60f; 21 | 22 | private GameData gameData; 23 | private List dataPersistenceObjects; 24 | private FileDataHandler dataHandler; 25 | 26 | private string selectedProfileId = ""; 27 | 28 | private Coroutine autoSaveCoroutine; 29 | 30 | public static DataPersistenceManager instance { get; private set; } 31 | 32 | private void Awake() 33 | { 34 | if (instance != null) 35 | { 36 | Debug.Log("Found more than one Data Persistence Manager in the scene. Destroying the newest one."); 37 | Destroy(this.gameObject); 38 | return; 39 | } 40 | instance = this; 41 | DontDestroyOnLoad(this.gameObject); 42 | 43 | if (disableDataPersistence) 44 | { 45 | Debug.LogWarning("Data Persistence is currently disabled!"); 46 | } 47 | 48 | this.dataHandler = new FileDataHandler(Application.persistentDataPath, fileName, useEncryption); 49 | 50 | InitializeSelectedProfileId(); 51 | } 52 | 53 | private void OnEnable() 54 | { 55 | SceneManager.sceneLoaded += OnSceneLoaded; 56 | } 57 | 58 | private void OnDisable() 59 | { 60 | SceneManager.sceneLoaded -= OnSceneLoaded; 61 | } 62 | 63 | public void OnSceneLoaded(Scene scene, LoadSceneMode mode) 64 | { 65 | this.dataPersistenceObjects = FindAllDataPersistenceObjects(); 66 | LoadGame(); 67 | 68 | // start up the auto saving coroutine 69 | if (autoSaveCoroutine != null) 70 | { 71 | StopCoroutine(autoSaveCoroutine); 72 | } 73 | autoSaveCoroutine = StartCoroutine(AutoSave()); 74 | } 75 | 76 | public void ChangeSelectedProfileId(string newProfileId) 77 | { 78 | // update the profile to use for saving and loading 79 | this.selectedProfileId = newProfileId; 80 | // load the game, which will use that profile, updating our game data accordingly 81 | LoadGame(); 82 | } 83 | 84 | public void DeleteProfileData(string profileId) 85 | { 86 | // delete the data for this profile id 87 | dataHandler.Delete(profileId); 88 | // initialize the selected profile id 89 | InitializeSelectedProfileId(); 90 | // reload the game so that our data matches the newly selected profile id 91 | LoadGame(); 92 | } 93 | 94 | private void InitializeSelectedProfileId() 95 | { 96 | this.selectedProfileId = dataHandler.GetMostRecentlyUpdatedProfileId(); 97 | if (overrideSelectedProfileId) 98 | { 99 | this.selectedProfileId = testSelectedProfileId; 100 | Debug.LogWarning("Overrode selected profile id with test id: " + testSelectedProfileId); 101 | } 102 | } 103 | 104 | public void NewGame() 105 | { 106 | this.gameData = new GameData(); 107 | } 108 | 109 | public void LoadGame() 110 | { 111 | // return right away if data persistence is disabled 112 | if (disableDataPersistence) 113 | { 114 | return; 115 | } 116 | 117 | // load any saved data from a file using the data handler 118 | this.gameData = dataHandler.Load(selectedProfileId); 119 | 120 | // start a new game if the data is null and we're configured to initialize data for debugging purposes 121 | if (this.gameData == null && initializeDataIfNull) 122 | { 123 | NewGame(); 124 | } 125 | 126 | // if no data can be loaded, don't continue 127 | if (this.gameData == null) 128 | { 129 | Debug.Log("No data was found. A New Game needs to be started before data can be loaded."); 130 | return; 131 | } 132 | 133 | // push the loaded data to all other scripts that need it 134 | foreach (IDataPersistence dataPersistenceObj in dataPersistenceObjects) 135 | { 136 | dataPersistenceObj.LoadData(gameData); 137 | } 138 | } 139 | 140 | public void SaveGame() 141 | { 142 | // return right away if data persistence is disabled 143 | if (disableDataPersistence) 144 | { 145 | return; 146 | } 147 | 148 | // if we don't have any data to save, log a warning here 149 | if (this.gameData == null) 150 | { 151 | Debug.LogWarning("No data was found. A New Game needs to be started before data can be saved."); 152 | return; 153 | } 154 | 155 | // pass the data to other scripts so they can update it 156 | foreach (IDataPersistence dataPersistenceObj in dataPersistenceObjects) 157 | { 158 | dataPersistenceObj.SaveData(gameData); 159 | } 160 | 161 | // timestamp the data so we know when it was last saved 162 | gameData.lastUpdated = System.DateTime.Now.ToBinary(); 163 | 164 | // save that data to a file using the data handler 165 | dataHandler.Save(gameData, selectedProfileId); 166 | } 167 | 168 | private void OnApplicationQuit() 169 | { 170 | SaveGame(); 171 | } 172 | 173 | private List FindAllDataPersistenceObjects() 174 | { 175 | // FindObjectsofType takes in an optional boolean to include inactive gameobjects 176 | IEnumerable dataPersistenceObjects = FindObjectsOfType(true) 177 | .OfType(); 178 | 179 | return new List(dataPersistenceObjects); 180 | } 181 | 182 | public bool HasGameData() 183 | { 184 | return gameData != null; 185 | } 186 | 187 | public Dictionary GetAllProfilesGameData() 188 | { 189 | return dataHandler.LoadAllProfiles(); 190 | } 191 | 192 | private IEnumerator AutoSave() 193 | { 194 | while (true) 195 | { 196 | yield return new WaitForSeconds(autoSaveTimeSeconds); 197 | SaveGame(); 198 | Debug.Log("Auto Saved Game"); 199 | } 200 | } 201 | } 202 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/DataPersistenceManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a43c513eda07bf94db46b159ebbc8b51 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/FileDataHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4d960248b76a174e8de8eb7d18afdb5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/IDataPersistence.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public interface IDataPersistence 6 | { 7 | void LoadData(GameData data); 8 | 9 | // The 'ref' keyword was removed from here as it is not needed. 10 | // In C#, non-primitive types are automatically passed by reference. 11 | void SaveData(GameData data); 12 | } 13 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/IDataPersistence.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dadb1cc8e7af5394ca73356b1c0f1289 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/SerializableTypes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e335e31db871f2246b93b4540f64cb92 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/SerializableTypes/SerializableDictionary.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class SerializableDictionary : Dictionary, ISerializationCallbackReceiver 7 | { 8 | 9 | [SerializeField] private List keys = new List(); 10 | [SerializeField] private List values = new List(); 11 | 12 | // save the dictionary to lists 13 | public void OnBeforeSerialize() 14 | { 15 | keys.Clear(); 16 | values.Clear(); 17 | foreach (KeyValuePair pair in this) 18 | { 19 | keys.Add(pair.Key); 20 | values.Add(pair.Value); 21 | } 22 | } 23 | 24 | // load the dictionary from lists 25 | public void OnAfterDeserialize() 26 | { 27 | this.Clear(); 28 | 29 | if (keys.Count != values.Count) 30 | { 31 | Debug.LogError("Tried to deserialize a SerializableDictionary, but the amount of keys (" 32 | + keys.Count + ") does not match the number of values (" + values.Count 33 | + ") which indicates that something went wrong"); 34 | } 35 | 36 | for (int i = 0; i < keys.Count; i++) 37 | { 38 | this.Add(keys[i], values[i]); 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Assets/Scripts/DataPersistence/SerializableTypes/SerializableDictionary.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dc07c3462db23d45a4aa37b7d15244c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Events.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a3ae8cb80e55c44badb80bd17b71c7b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Events/GameEventsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | public class GameEventsManager : MonoBehaviour 5 | { 6 | public static GameEventsManager instance { get; private set; } 7 | 8 | private void Awake() 9 | { 10 | if (instance != null) 11 | { 12 | Debug.LogError("Found more than one Game Events Manager in the scene."); 13 | } 14 | instance = this; 15 | } 16 | 17 | public event Action onPlayerDeath; 18 | public void PlayerDeath() 19 | { 20 | if (onPlayerDeath != null) 21 | { 22 | onPlayerDeath(); 23 | } 24 | } 25 | 26 | public event Action onCoinCollected; 27 | public void CoinCollected() 28 | { 29 | if (onCoinCollected != null) 30 | { 31 | onCoinCollected(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Assets/Scripts/Events/GameEventsManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdfcf57162c58cb4ea15c6da70634faa 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Input.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 963790af500be6e4aba52749fafd8208 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Input/InputManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.InputSystem; 3 | 4 | // This script acts as a single point for all other scripts to get 5 | // the current input from. It uses Unity's new Input System and 6 | // functions should be mapped to their corresponding controls 7 | // using a PlayerInput component with Unity Events. 8 | 9 | [RequireComponent(typeof(PlayerInput))] 10 | public class InputManager : MonoBehaviour 11 | { 12 | private Vector2 moveDirection = Vector2.zero; 13 | private bool jumpPressed = false; 14 | private bool exitPressed = false; 15 | 16 | public static InputManager instance { get; private set; } 17 | 18 | private void Awake() 19 | { 20 | if (instance != null) 21 | { 22 | Debug.LogError("Found more than one Input Manager in the scene."); 23 | } 24 | instance = this; 25 | } 26 | 27 | public void MovePressed(InputAction.CallbackContext context) 28 | { 29 | if (context.performed) 30 | { 31 | moveDirection = context.ReadValue(); 32 | } 33 | else if (context.canceled) 34 | { 35 | moveDirection = context.ReadValue(); 36 | } 37 | } 38 | 39 | public void JumpPressed(InputAction.CallbackContext context) 40 | { 41 | if (context.performed) 42 | { 43 | jumpPressed = true; 44 | } 45 | else if (context.canceled) 46 | { 47 | jumpPressed = false; 48 | } 49 | } 50 | 51 | public void ExitPressed(InputAction.CallbackContext context) 52 | { 53 | if (context.performed) 54 | { 55 | exitPressed = true; 56 | } 57 | else if (context.canceled) 58 | { 59 | exitPressed = false; 60 | } 61 | } 62 | 63 | public Vector2 GetMoveDirection() 64 | { 65 | return moveDirection; 66 | } 67 | 68 | // for any of the below 'Get' methods, if we're getting it then we're also using it, 69 | // which means we should set it to false so that it can't be used again until actually 70 | // pressed again. 71 | 72 | public bool GetJumpPressed() 73 | { 74 | bool result = jumpPressed; 75 | RegisterJumpPressedThisFrame(); 76 | return result; 77 | } 78 | 79 | public void RegisterJumpPressedThisFrame() 80 | { 81 | jumpPressed = false; 82 | } 83 | 84 | public bool GetExitPressed() 85 | { 86 | bool result = exitPressed; 87 | RegisterExitPressedThisFrame(); 88 | return result; 89 | } 90 | 91 | public void RegisterExitPressedThisFrame() 92 | { 93 | exitPressed = false; 94 | } 95 | 96 | } 97 | -------------------------------------------------------------------------------- /Assets/Scripts/Input/InputManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25bad204fb395a54fbce41163b1894cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b05f01d1a93d2e4eb05af829abb9498 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/ConfirmationPopupMenu.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using UnityEngine.Events; 6 | using TMPro; 7 | 8 | public class ConfirmationPopupMenu : Menu 9 | { 10 | [Header("Components")] 11 | [SerializeField] private TextMeshProUGUI displayText; 12 | [SerializeField] private Button confirmButton; 13 | [SerializeField] private Button cancelButton; 14 | 15 | public void ActivateMenu(string displayText, UnityAction confirmAction, UnityAction cancelAction) 16 | { 17 | this.gameObject.SetActive(true); 18 | 19 | // set the display text 20 | this.displayText.text = displayText; 21 | 22 | // remove any existing listeners just to make sure there aren't any previous ones hanging around 23 | // note - this only removes listeners added through code 24 | confirmButton.onClick.RemoveAllListeners(); 25 | cancelButton.onClick.RemoveAllListeners(); 26 | 27 | // assign the onClick listeners 28 | confirmButton.onClick.AddListener(() => { 29 | DeactivateMenu(); 30 | confirmAction(); 31 | }); 32 | cancelButton.onClick.AddListener(() => { 33 | DeactivateMenu(); 34 | cancelAction(); 35 | }); 36 | } 37 | 38 | private void DeactivateMenu() 39 | { 40 | this.gameObject.SetActive(false); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/ConfirmationPopupMenu.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09def380de854ab4eaa42c70110fec73 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/MainMenu.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.SceneManagement; 5 | using UnityEngine.UI; 6 | 7 | public class MainMenu : Menu 8 | { 9 | [Header("Menu Navigation")] 10 | [SerializeField] private SaveSlotsMenu saveSlotsMenu; 11 | 12 | [Header("Menu Buttons")] 13 | [SerializeField] private Button newGameButton; 14 | [SerializeField] private Button continueGameButton; 15 | [SerializeField] private Button loadGameButton; 16 | 17 | private void Start() 18 | { 19 | DisableButtonsDependingOnData(); 20 | } 21 | 22 | private void DisableButtonsDependingOnData() 23 | { 24 | if (!DataPersistenceManager.instance.HasGameData()) 25 | { 26 | continueGameButton.interactable = false; 27 | loadGameButton.interactable = false; 28 | } 29 | } 30 | 31 | public void OnNewGameClicked() 32 | { 33 | saveSlotsMenu.ActivateMenu(false); 34 | this.DeactivateMenu(); 35 | } 36 | 37 | public void OnLoadGameClicked() 38 | { 39 | saveSlotsMenu.ActivateMenu(true); 40 | this.DeactivateMenu(); 41 | } 42 | 43 | public void OnContinueGameClicked() 44 | { 45 | DisableMenuButtons(); 46 | // save the game anytime before loading a new scene 47 | DataPersistenceManager.instance.SaveGame(); 48 | // load the next scene - which will in turn load the game because of 49 | // OnSceneLoaded() in the DataPersistenceManager 50 | SceneManager.LoadSceneAsync("SampleScene"); 51 | } 52 | 53 | private void DisableMenuButtons() 54 | { 55 | newGameButton.interactable = false; 56 | continueGameButton.interactable = false; 57 | } 58 | 59 | public void ActivateMenu() 60 | { 61 | this.gameObject.SetActive(true); 62 | DisableButtonsDependingOnData(); 63 | } 64 | 65 | public void DeactivateMenu() 66 | { 67 | this.gameObject.SetActive(false); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/MainMenu.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ebdfae3da947a2c4faf6a95018cb7397 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/Menu.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class Menu : MonoBehaviour 7 | { 8 | [Header("First Selected Button")] 9 | [SerializeField] private Button firstSelected; 10 | 11 | protected virtual void OnEnable() 12 | { 13 | SetFirstSelected(firstSelected); 14 | } 15 | 16 | public void SetFirstSelected(Button firstSelectedButton) 17 | { 18 | firstSelectedButton.Select(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/Menu.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09b477cfb2cbc434195f92d68085f885 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/MainMenu/SaveSlot.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | using UnityEngine.UI; 6 | 7 | public class SaveSlot : MonoBehaviour 8 | { 9 | [Header("Profile")] 10 | [SerializeField] private string profileId = ""; 11 | 12 | [Header("Content")] 13 | [SerializeField] private GameObject noDataContent; 14 | [SerializeField] private GameObject hasDataContent; 15 | [SerializeField] private TextMeshProUGUI percentageCompleteText; 16 | [SerializeField] private TextMeshProUGUI deathCountText; 17 | 18 | [Header("Clear Data Button")] 19 | [SerializeField] private Button clearButton; 20 | 21 | public bool hasData { get; private set; } = false; 22 | 23 | private Button saveSlotButton; 24 | 25 | private void Awake() 26 | { 27 | saveSlotButton = this.GetComponent