├── .gitignore ├── Assets ├── Animations.meta ├── Animations │ ├── Gem.meta │ ├── Gem │ │ ├── Gem.controller │ │ ├── Gem.controller.meta │ │ ├── gem-creating.anim │ │ ├── gem-creating.anim.meta │ │ ├── gem-disabled.anim │ │ ├── gem-disabled.anim.meta │ │ ├── gem-enabled.anim │ │ ├── gem-enabled.anim.meta │ │ ├── gem-hinting.anim │ │ ├── gem-hinting.anim.meta │ │ ├── gem-matched.anim │ │ ├── gem-matched.anim.meta │ │ ├── gem-special.anim │ │ ├── gem-special.anim.meta │ │ ├── special-gem.overrideController │ │ └── special-gem.overrideController.meta │ ├── UI.meta │ └── UI │ │ ├── Combo Score.meta │ │ ├── Combo Score │ │ ├── combo-score-default.anim │ │ ├── combo-score-default.anim.meta │ │ ├── combo-score-pulse.anim │ │ ├── combo-score-pulse.anim.meta │ │ ├── combo-score-ui.overrideController │ │ └── combo-score-ui.overrideController.meta │ │ ├── Message.meta │ │ ├── Message │ │ ├── msg-default.anim │ │ ├── msg-default.anim.meta │ │ ├── msg-pulse.anim │ │ ├── msg-pulse.anim.meta │ │ ├── msg-ui.overrideController │ │ └── msg-ui.overrideController.meta │ │ ├── default.anim │ │ ├── default.anim.meta │ │ ├── pulse.anim │ │ ├── pulse.anim.meta │ │ ├── ui.controller │ │ └── ui.controller.meta ├── Audio.meta ├── Audio │ ├── Music.meta │ ├── Music │ │ ├── Attribution.txt │ │ ├── Attribution.txt.meta │ │ ├── Hyperfun.ogg │ │ └── Hyperfun.ogg.meta │ ├── SFX.meta │ └── SFX │ │ ├── Clear.ogg │ │ ├── Clear.ogg.meta │ │ ├── Select.mp3 │ │ ├── Select.mp3.meta │ │ ├── Swap.ogg │ │ └── Swap.ogg.meta ├── Fonts.meta ├── Fonts │ ├── HVD_Comic_Serif_Pro SDF - Outlined.mat │ ├── HVD_Comic_Serif_Pro SDF - Outlined.mat.meta │ ├── HVD_Comic_Serif_Pro SDF.asset │ ├── HVD_Comic_Serif_Pro SDF.asset.meta │ ├── HVD_Comic_Serif_Pro.otf │ └── HVD_Comic_Serif_Pro.otf.meta ├── Resources.meta ├── Resources │ ├── GameData.asset │ ├── GameData.asset.meta │ ├── Prefabs.meta │ └── Prefabs │ │ ├── Gems.meta │ │ ├── Gems │ │ ├── blenderPrefab.prefab │ │ ├── blenderPrefab.prefab.meta │ │ ├── gemPrefab.prefab │ │ └── gemPrefab.prefab.meta │ │ ├── UI.meta │ │ ├── UI │ │ ├── button.prefab │ │ └── button.prefab.meta │ │ ├── sfxSourcePrefab.prefab │ │ └── sfxSourcePrefab.prefab.meta ├── Scenes.meta ├── Scenes │ ├── main.unity │ └── main.unity.meta ├── Scripts.meta ├── Scripts │ ├── BaseGem.cs │ ├── BaseGem.cs.meta │ ├── BlenderGem.cs │ ├── BlenderGem.cs.meta │ ├── Controllers.meta │ ├── Controllers │ │ ├── BoardController.cs │ │ ├── BoardController.cs.meta │ │ ├── GameController.cs │ │ ├── GameController.cs.meta │ │ ├── HintController.cs │ │ ├── HintController.cs.meta │ │ ├── ITouchable.cs │ │ ├── ITouchable.cs.meta │ │ ├── SFXInstance.cs │ │ ├── SFXInstance.cs.meta │ │ ├── SoundController.cs │ │ ├── SoundController.cs.meta │ │ ├── TouchController.cs │ │ ├── TouchController.cs.meta │ │ ├── UIController.cs │ │ └── UIController.cs.meta │ ├── Editor.meta │ ├── Editor │ │ ├── PlayerPrefsEditor.cs │ │ └── PlayerPrefsEditor.cs.meta │ ├── GameData.cs │ ├── GameData.cs.meta │ ├── MatchInfo.cs │ ├── MatchInfo.cs.meta │ ├── UI.meta │ ├── UI │ │ ├── Button.cs │ │ └── Button.cs.meta │ ├── Utilities.meta │ └── Utilities │ │ ├── Miscellaneous.cs │ │ ├── Miscellaneous.cs.meta │ │ ├── PlayerPrefsExtensions.cs │ │ ├── PlayerPrefsExtensions.cs.meta │ │ ├── SingletonMonoBehaviour.cs │ │ ├── SingletonMonoBehaviour.cs.meta │ │ ├── SingletonScriptableObject.cs │ │ ├── SingletonScriptableObject.cs.meta │ │ ├── WaitForSecondsAndNotPaused.cs │ │ └── WaitForSecondsAndNotPaused.cs.meta ├── Sprites.meta ├── Sprites │ ├── Gems.meta │ ├── Gems │ │ ├── blender.png │ │ ├── blender.png.meta │ │ ├── characters_0001.png │ │ ├── characters_0001.png.meta │ │ ├── characters_0002.png │ │ ├── characters_0002.png.meta │ │ ├── characters_0003.png │ │ ├── characters_0003.png.meta │ │ ├── characters_0004.png │ │ ├── characters_0004.png.meta │ │ ├── characters_0005.png │ │ ├── characters_0005.png.meta │ │ ├── characters_0006.png │ │ ├── characters_0006.png.meta │ │ ├── characters_0007.png │ │ └── characters_0007.png.meta │ ├── UI.meta │ ├── UI │ │ ├── bg.png │ │ ├── bg.png.meta │ │ ├── button_down.png │ │ ├── button_down.png.meta │ │ ├── button_up.png │ │ ├── button_up.png.meta │ │ ├── inGameCounter_bar.png │ │ ├── inGameCounter_bar.png.meta │ │ ├── inGame_counter.png │ │ ├── inGame_counter.png.meta │ │ ├── logo.png │ │ └── logo.png.meta │ ├── square.png │ └── square.png.meta ├── TextMesh Pro.meta ├── WebGLTemplates.meta └── WebGLTemplates │ ├── Mobile (Portrait) - Diego Moreira.meta │ └── Mobile (Portrait) - Diego Moreira │ ├── index.html │ ├── index.html.meta │ ├── scripts.js │ ├── scripts.js.meta │ ├── style.css │ └── style.css.meta ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset ├── README.md └── docs ├── Build ├── UnityLoader.js ├── docs.data.unityweb ├── docs.json ├── docs.wasm.code.unityweb ├── docs.wasm.framework.unityweb ├── public.data.unityweb ├── public.json ├── public.wasm.code.unityweb └── public.wasm.framework.unityweb ├── index.html ├── previews ├── blender.gif ├── blender.png ├── combo.gif ├── hinting.gif ├── intro.gif └── logo.png ├── scripts.js └── style.css /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/unity 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=unity 3 | 4 | ### Unity ### 5 | # This .gitignore file should be placed at the root of your Unity project directory 6 | # 7 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 8 | /[Ll]ibrary/ 9 | /[Tt]emp/ 10 | /[Oo]bj/ 11 | /[Bb]uild/ 12 | /[Bb]uilds/ 13 | /[Ll]ogs/ 14 | /[Uu]ser[Ss]ettings/ 15 | 16 | # MemoryCaptures can get excessive in size. 17 | # They also could contain extremely sensitive data 18 | /[Mm]emoryCaptures/ 19 | 20 | # Asset meta data should only be ignored when the corresponding asset is also ignored 21 | !/[Aa]ssets/**/*.meta 22 | 23 | # Uncomment this line if you wish to ignore the asset store tools plugin 24 | # /[Aa]ssets/AssetStoreTools* 25 | 26 | # Autogenerated Jetbrains Rider plugin 27 | /[Aa]ssets/Plugins/Editor/JetBrains* 28 | 29 | # Visual Studio cache directory 30 | .vs/ 31 | .vscode/ 32 | 33 | # Gradle cache directory 34 | .gradle/ 35 | 36 | # Autogenerated VS/MD/Consulo solution and project files 37 | ExportedObj/ 38 | .consulo/ 39 | *.csproj 40 | *.unityproj 41 | *.sln 42 | *.suo 43 | *.tmp 44 | *.user 45 | *.userprefs 46 | *.pidb 47 | *.booproj 48 | *.svd 49 | *.pdb 50 | *.mdb 51 | *.opendb 52 | *.VC.db 53 | 54 | # Unity3D generated meta files 55 | *.pidb.meta 56 | *.pdb.meta 57 | *.mdb.meta 58 | 59 | # Unity3D generated file on crash reports 60 | sysinfo.txt 61 | 62 | # Builds 63 | *.apk 64 | *.unitypackage 65 | 66 | # Crashlytics generated file 67 | crashlytics-build.properties 68 | 69 | # Autogenerated files 70 | InitTestScene*.unity.meta 71 | InitTestScene*.unity 72 | 73 | # TextMesh Pro files 74 | [Aa]ssets/TextMesh*Pro/ 75 | TextMesh*Pro.meta 76 | 77 | # End of https://www.toptal.com/developers/gitignore/api/unity -------------------------------------------------------------------------------- /Assets/Animations.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2387a414c22352645af374ccb16a472a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea7757e922a50f048a123a8af468ecbc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/Gem.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 954b782890db15840975fee254c4f6f2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-creating.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd893e2081706c24da1b208ba833ea24 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-disabled.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9758224acc3ea144b915927a9cdd481b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-enabled.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: gem-enabled 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 | - curve: 20 | serializedVersion: 2 21 | m_Curve: 22 | - serializedVersion: 3 23 | time: 0 24 | value: {x: 1, y: 1, z: 1} 25 | inSlope: {x: 0, y: 0, z: 0} 26 | outSlope: {x: 0, y: 0, z: 0} 27 | tangentMode: 0 28 | weightedMode: 0 29 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 30 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 31 | m_PreInfinity: 2 32 | m_PostInfinity: 2 33 | m_RotationOrder: 4 34 | path: 35 | m_FloatCurves: 36 | - curve: 37 | serializedVersion: 2 38 | m_Curve: 39 | - serializedVersion: 3 40 | time: 0 41 | value: 1 42 | inSlope: 0 43 | outSlope: 0 44 | tangentMode: 136 45 | weightedMode: 0 46 | inWeight: 0.33333334 47 | outWeight: 0.33333334 48 | m_PreInfinity: 2 49 | m_PostInfinity: 2 50 | m_RotationOrder: 4 51 | attribute: m_Color.a 52 | path: 53 | classID: 212 54 | script: {fileID: 0} 55 | - curve: 56 | serializedVersion: 2 57 | m_Curve: 58 | - serializedVersion: 3 59 | time: 0 60 | value: 0 61 | inSlope: Infinity 62 | outSlope: Infinity 63 | tangentMode: 103 64 | weightedMode: 0 65 | inWeight: 0 66 | outWeight: 0 67 | m_PreInfinity: 2 68 | m_PostInfinity: 2 69 | m_RotationOrder: 4 70 | attribute: m_SortingOrder 71 | path: 72 | classID: 212 73 | script: {fileID: 0} 74 | m_PPtrCurves: [] 75 | m_SampleRate: 60 76 | m_WrapMode: 0 77 | m_Bounds: 78 | m_Center: {x: 0, y: 0, z: 0} 79 | m_Extent: {x: 0, y: 0, z: 0} 80 | m_ClipBindingConstant: 81 | genericBindings: 82 | - serializedVersion: 2 83 | path: 0 84 | attribute: 3762991556 85 | script: {fileID: 0} 86 | typeID: 212 87 | customType: 26 88 | isPPtrCurve: 0 89 | - serializedVersion: 2 90 | path: 0 91 | attribute: 3 92 | script: {fileID: 0} 93 | typeID: 4 94 | customType: 0 95 | isPPtrCurve: 0 96 | - serializedVersion: 2 97 | path: 0 98 | attribute: 304273561 99 | script: {fileID: 0} 100 | typeID: 212 101 | customType: 0 102 | isPPtrCurve: 0 103 | pptrCurveMapping: [] 104 | m_AnimationClipSettings: 105 | serializedVersion: 2 106 | m_AdditiveReferencePoseClip: {fileID: 0} 107 | m_AdditiveReferencePoseTime: 0 108 | m_StartTime: 0 109 | m_StopTime: 0 110 | m_OrientationOffsetY: 0 111 | m_Level: 0 112 | m_CycleOffset: 0 113 | m_HasAdditiveReferencePose: 0 114 | m_LoopTime: 0 115 | m_LoopBlend: 0 116 | m_LoopBlendOrientation: 0 117 | m_LoopBlendPositionY: 0 118 | m_LoopBlendPositionXZ: 0 119 | m_KeepOriginalOrientation: 0 120 | m_KeepOriginalPositionY: 1 121 | m_KeepOriginalPositionXZ: 0 122 | m_HeightFromFeet: 0 123 | m_Mirror: 0 124 | m_EditorCurves: 125 | - curve: 126 | serializedVersion: 2 127 | m_Curve: 128 | - serializedVersion: 3 129 | time: 0 130 | value: 1 131 | inSlope: 0 132 | outSlope: 0 133 | tangentMode: 136 134 | weightedMode: 0 135 | inWeight: 0.33333334 136 | outWeight: 0.33333334 137 | m_PreInfinity: 2 138 | m_PostInfinity: 2 139 | m_RotationOrder: 4 140 | attribute: m_LocalScale.x 141 | path: 142 | classID: 4 143 | script: {fileID: 0} 144 | - curve: 145 | serializedVersion: 2 146 | m_Curve: 147 | - serializedVersion: 3 148 | time: 0 149 | value: 1 150 | inSlope: 0 151 | outSlope: 0 152 | tangentMode: 136 153 | weightedMode: 0 154 | inWeight: 0.33333334 155 | outWeight: 0.33333334 156 | m_PreInfinity: 2 157 | m_PostInfinity: 2 158 | m_RotationOrder: 4 159 | attribute: m_LocalScale.y 160 | path: 161 | classID: 4 162 | script: {fileID: 0} 163 | - curve: 164 | serializedVersion: 2 165 | m_Curve: 166 | - serializedVersion: 3 167 | time: 0 168 | value: 1 169 | inSlope: 0 170 | outSlope: 0 171 | tangentMode: 136 172 | weightedMode: 0 173 | inWeight: 0.33333334 174 | outWeight: 0.33333334 175 | m_PreInfinity: 2 176 | m_PostInfinity: 2 177 | m_RotationOrder: 4 178 | attribute: m_LocalScale.z 179 | path: 180 | classID: 4 181 | script: {fileID: 0} 182 | - curve: 183 | serializedVersion: 2 184 | m_Curve: 185 | - serializedVersion: 3 186 | time: 0 187 | value: 1 188 | inSlope: 0 189 | outSlope: 0 190 | tangentMode: 136 191 | weightedMode: 0 192 | inWeight: 0.33333334 193 | outWeight: 0.33333334 194 | m_PreInfinity: 2 195 | m_PostInfinity: 2 196 | m_RotationOrder: 4 197 | attribute: m_Color.a 198 | path: 199 | classID: 212 200 | script: {fileID: 0} 201 | - curve: 202 | serializedVersion: 2 203 | m_Curve: 204 | - serializedVersion: 3 205 | time: 0 206 | value: 0 207 | inSlope: Infinity 208 | outSlope: Infinity 209 | tangentMode: 103 210 | weightedMode: 0 211 | inWeight: 0 212 | outWeight: 0 213 | m_PreInfinity: 2 214 | m_PostInfinity: 2 215 | m_RotationOrder: 4 216 | attribute: m_SortingOrder 217 | path: 218 | classID: 212 219 | script: {fileID: 0} 220 | m_EulerEditorCurves: [] 221 | m_HasGenericRootTransform: 0 222 | m_HasMotionFloatCurves: 0 223 | m_Events: [] 224 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-enabled.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b880a0b7ee1188742b2073acb2cdadb0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-hinting.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9db4b3b215d0e184eb4dd7f43a7020d3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-matched.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdf7e767408abcf4b8841060ade4dcf6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/gem-special.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e67950769f420d644995a475de2d4f7c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/special-gem.overrideController: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!221 &22100000 4 | AnimatorOverrideController: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: special-gem 10 | m_Controller: {fileID: 9100000, guid: 954b782890db15840975fee254c4f6f2, type: 2} 11 | m_Clips: 12 | - m_OriginalClip: {fileID: 7400000, guid: cdf7e767408abcf4b8841060ade4dcf6, type: 2} 13 | m_OverrideClip: {fileID: 7400000, guid: e67950769f420d644995a475de2d4f7c, type: 2} 14 | -------------------------------------------------------------------------------- /Assets/Animations/Gem/special-gem.overrideController.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 333db7bc857253b41997cb3bc05ecaa3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 609a61293decd97458dc811aa4d6879f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9757c369322325448c836e74b364c0d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score/combo-score-default.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: combo-score-default 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 | - curve: 20 | serializedVersion: 2 21 | m_Curve: 22 | - serializedVersion: 3 23 | time: 0 24 | value: {x: 0, y: 0, z: 1} 25 | inSlope: {x: 0, y: 0, z: 0} 26 | outSlope: {x: 0, y: 0, z: 0} 27 | tangentMode: 0 28 | weightedMode: 0 29 | inWeight: {x: 0, y: 0.33333334, z: 0.33333334} 30 | outWeight: {x: 0, y: 0.33333334, z: 0.33333334} 31 | m_PreInfinity: 2 32 | m_PostInfinity: 2 33 | m_RotationOrder: 4 34 | path: combo-multiplier-text 35 | m_FloatCurves: 36 | - curve: 37 | serializedVersion: 2 38 | m_Curve: 39 | - serializedVersion: 3 40 | time: 0 41 | value: -200 42 | inSlope: 0 43 | outSlope: 0 44 | tangentMode: 136 45 | weightedMode: 0 46 | inWeight: 0 47 | outWeight: 0 48 | m_PreInfinity: 2 49 | m_PostInfinity: 2 50 | m_RotationOrder: 4 51 | attribute: m_AnchoredPosition.x 52 | path: 53 | classID: 224 54 | script: {fileID: 0} 55 | m_PPtrCurves: [] 56 | m_SampleRate: 60 57 | m_WrapMode: 0 58 | m_Bounds: 59 | m_Center: {x: 0, y: 0, z: 0} 60 | m_Extent: {x: 0, y: 0, z: 0} 61 | m_ClipBindingConstant: 62 | genericBindings: 63 | - serializedVersion: 2 64 | path: 1747112024 65 | attribute: 3 66 | script: {fileID: 0} 67 | typeID: 4 68 | customType: 0 69 | isPPtrCurve: 0 70 | - serializedVersion: 2 71 | path: 0 72 | attribute: 1460864421 73 | script: {fileID: 0} 74 | typeID: 224 75 | customType: 28 76 | isPPtrCurve: 0 77 | pptrCurveMapping: [] 78 | m_AnimationClipSettings: 79 | serializedVersion: 2 80 | m_AdditiveReferencePoseClip: {fileID: 0} 81 | m_AdditiveReferencePoseTime: 0 82 | m_StartTime: 0 83 | m_StopTime: 0 84 | m_OrientationOffsetY: 0 85 | m_Level: 0 86 | m_CycleOffset: 0 87 | m_HasAdditiveReferencePose: 0 88 | m_LoopTime: 0 89 | m_LoopBlend: 0 90 | m_LoopBlendOrientation: 0 91 | m_LoopBlendPositionY: 0 92 | m_LoopBlendPositionXZ: 0 93 | m_KeepOriginalOrientation: 0 94 | m_KeepOriginalPositionY: 1 95 | m_KeepOriginalPositionXZ: 0 96 | m_HeightFromFeet: 0 97 | m_Mirror: 0 98 | m_EditorCurves: 99 | - curve: 100 | serializedVersion: 2 101 | m_Curve: 102 | - serializedVersion: 3 103 | time: 0 104 | value: -200 105 | inSlope: 0 106 | outSlope: 0 107 | tangentMode: 136 108 | weightedMode: 0 109 | inWeight: 0 110 | outWeight: 0 111 | m_PreInfinity: 2 112 | m_PostInfinity: 2 113 | m_RotationOrder: 4 114 | attribute: m_AnchoredPosition.x 115 | path: 116 | classID: 224 117 | script: {fileID: 0} 118 | - curve: 119 | serializedVersion: 2 120 | m_Curve: 121 | - serializedVersion: 3 122 | time: 0 123 | value: 0 124 | inSlope: 0 125 | outSlope: 0 126 | tangentMode: 136 127 | weightedMode: 0 128 | inWeight: 0 129 | outWeight: 0 130 | m_PreInfinity: 2 131 | m_PostInfinity: 2 132 | m_RotationOrder: 4 133 | attribute: m_LocalScale.x 134 | path: combo-multiplier-text 135 | classID: 224 136 | script: {fileID: 0} 137 | - curve: 138 | serializedVersion: 2 139 | m_Curve: 140 | - serializedVersion: 3 141 | time: 0 142 | value: 0 143 | inSlope: 0 144 | outSlope: 0 145 | tangentMode: 136 146 | weightedMode: 0 147 | inWeight: 0 148 | outWeight: 0 149 | m_PreInfinity: 2 150 | m_PostInfinity: 2 151 | m_RotationOrder: 4 152 | attribute: m_LocalScale.y 153 | path: combo-multiplier-text 154 | classID: 224 155 | script: {fileID: 0} 156 | - curve: 157 | serializedVersion: 2 158 | m_Curve: 159 | - serializedVersion: 3 160 | time: 0 161 | value: 1 162 | inSlope: 0 163 | outSlope: 0 164 | tangentMode: 136 165 | weightedMode: 0 166 | inWeight: 0 167 | outWeight: 0 168 | m_PreInfinity: 2 169 | m_PostInfinity: 2 170 | m_RotationOrder: 4 171 | attribute: m_LocalScale.z 172 | path: combo-multiplier-text 173 | classID: 224 174 | script: {fileID: 0} 175 | m_EulerEditorCurves: [] 176 | m_HasGenericRootTransform: 0 177 | m_HasMotionFloatCurves: 0 178 | m_Events: [] 179 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score/combo-score-default.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3914372c48e25b4ea006881ee229f6d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score/combo-score-pulse.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0c6c8dd32e343b48a49f4909b7f4c6d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score/combo-score-ui.overrideController: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!221 &22100000 4 | AnimatorOverrideController: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: combo-score-ui 10 | m_Controller: {fileID: 9100000, guid: e8617bf6c3d7539499608277b64d3c6f, type: 2} 11 | m_Clips: 12 | - m_OriginalClip: {fileID: 7400000, guid: 872e952749447d542835393591a0ad2f, type: 2} 13 | m_OverrideClip: {fileID: 7400000, guid: c3914372c48e25b4ea006881ee229f6d, type: 2} 14 | - m_OriginalClip: {fileID: 7400000, guid: 89f82f15d2bcdee458bf59d91c313c69, type: 2} 15 | m_OverrideClip: {fileID: 7400000, guid: f0c6c8dd32e343b48a49f4909b7f4c6d, type: 2} 16 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Combo Score/combo-score-ui.overrideController.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afa33942b1a214d4fbba09815c03a905 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b8f3063a74c46fa4dabd5ac003f6df47 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message/msg-default.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: msg-default 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 | - curve: 21 | serializedVersion: 2 22 | m_Curve: 23 | - serializedVersion: 3 24 | time: 0 25 | value: -280 26 | inSlope: 0 27 | outSlope: 0 28 | tangentMode: 136 29 | weightedMode: 0 30 | inWeight: 0 31 | outWeight: 0 32 | m_PreInfinity: 2 33 | m_PostInfinity: 2 34 | m_RotationOrder: 4 35 | attribute: m_AnchoredPosition.y 36 | path: 37 | classID: 224 38 | script: {fileID: 0} 39 | - curve: 40 | serializedVersion: 2 41 | m_Curve: 42 | - serializedVersion: 3 43 | time: 0 44 | value: 0 45 | inSlope: 0 46 | outSlope: 0 47 | tangentMode: 136 48 | weightedMode: 0 49 | inWeight: 0 50 | outWeight: 0 51 | m_PreInfinity: 2 52 | m_PostInfinity: 2 53 | m_RotationOrder: 4 54 | attribute: m_fontColor.a 55 | path: 56 | classID: 114 57 | script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} 58 | m_PPtrCurves: [] 59 | m_SampleRate: 60 60 | m_WrapMode: 0 61 | m_Bounds: 62 | m_Center: {x: 0, y: 0, z: 0} 63 | m_Extent: {x: 0, y: 0, z: 0} 64 | m_ClipBindingConstant: 65 | genericBindings: 66 | - serializedVersion: 2 67 | path: 0 68 | attribute: 538195251 69 | script: {fileID: 0} 70 | typeID: 224 71 | customType: 28 72 | isPPtrCurve: 0 73 | - serializedVersion: 2 74 | path: 0 75 | attribute: 4185109675 76 | script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} 77 | typeID: 114 78 | customType: 0 79 | isPPtrCurve: 0 80 | pptrCurveMapping: [] 81 | m_AnimationClipSettings: 82 | serializedVersion: 2 83 | m_AdditiveReferencePoseClip: {fileID: 0} 84 | m_AdditiveReferencePoseTime: 0 85 | m_StartTime: 0 86 | m_StopTime: 0 87 | m_OrientationOffsetY: 0 88 | m_Level: 0 89 | m_CycleOffset: 0 90 | m_HasAdditiveReferencePose: 0 91 | m_LoopTime: 0 92 | m_LoopBlend: 0 93 | m_LoopBlendOrientation: 0 94 | m_LoopBlendPositionY: 0 95 | m_LoopBlendPositionXZ: 0 96 | m_KeepOriginalOrientation: 0 97 | m_KeepOriginalPositionY: 1 98 | m_KeepOriginalPositionXZ: 0 99 | m_HeightFromFeet: 0 100 | m_Mirror: 0 101 | m_EditorCurves: 102 | - curve: 103 | serializedVersion: 2 104 | m_Curve: 105 | - serializedVersion: 3 106 | time: 0 107 | value: -280 108 | inSlope: 0 109 | outSlope: 0 110 | tangentMode: 136 111 | weightedMode: 0 112 | inWeight: 0 113 | outWeight: 0 114 | m_PreInfinity: 2 115 | m_PostInfinity: 2 116 | m_RotationOrder: 4 117 | attribute: m_AnchoredPosition.y 118 | path: 119 | classID: 224 120 | script: {fileID: 0} 121 | - curve: 122 | serializedVersion: 2 123 | m_Curve: 124 | - serializedVersion: 3 125 | time: 0 126 | value: 0 127 | inSlope: 0 128 | outSlope: 0 129 | tangentMode: 136 130 | weightedMode: 0 131 | inWeight: 0 132 | outWeight: 0 133 | m_PreInfinity: 2 134 | m_PostInfinity: 2 135 | m_RotationOrder: 4 136 | attribute: m_fontColor.a 137 | path: 138 | classID: 114 139 | script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} 140 | m_EulerEditorCurves: [] 141 | m_HasGenericRootTransform: 0 142 | m_HasMotionFloatCurves: 0 143 | m_Events: [] 144 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message/msg-default.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9c07ec9a4ecc0e489ceeadfbf6db5da 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message/msg-pulse.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bdfabf6253725784493e459b5c7069d8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message/msg-ui.overrideController: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!221 &22100000 4 | AnimatorOverrideController: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: msg-ui 10 | m_Controller: {fileID: 9100000, guid: e8617bf6c3d7539499608277b64d3c6f, type: 2} 11 | m_Clips: 12 | - m_OriginalClip: {fileID: 7400000, guid: 872e952749447d542835393591a0ad2f, type: 2} 13 | m_OverrideClip: {fileID: 7400000, guid: f9c07ec9a4ecc0e489ceeadfbf6db5da, type: 2} 14 | - m_OriginalClip: {fileID: 7400000, guid: 89f82f15d2bcdee458bf59d91c313c69, type: 2} 15 | m_OverrideClip: {fileID: 7400000, guid: bdfabf6253725784493e459b5c7069d8, type: 2} 16 | -------------------------------------------------------------------------------- /Assets/Animations/UI/Message/msg-ui.overrideController.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2daf1c01252b5a94a85f85d7932bab15 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/default.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: default 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 | m_SampleRate: 60 22 | m_WrapMode: 0 23 | m_Bounds: 24 | m_Center: {x: 0, y: 0, z: 0} 25 | m_Extent: {x: 0, y: 0, z: 0} 26 | m_ClipBindingConstant: 27 | genericBindings: [] 28 | pptrCurveMapping: [] 29 | m_AnimationClipSettings: 30 | serializedVersion: 2 31 | m_AdditiveReferencePoseClip: {fileID: 0} 32 | m_AdditiveReferencePoseTime: 0 33 | m_StartTime: 0 34 | m_StopTime: 1 35 | m_OrientationOffsetY: 0 36 | m_Level: 0 37 | m_CycleOffset: 0 38 | m_HasAdditiveReferencePose: 0 39 | m_LoopTime: 0 40 | m_LoopBlend: 0 41 | m_LoopBlendOrientation: 0 42 | m_LoopBlendPositionY: 0 43 | m_LoopBlendPositionXZ: 0 44 | m_KeepOriginalOrientation: 0 45 | m_KeepOriginalPositionY: 1 46 | m_KeepOriginalPositionXZ: 0 47 | m_HeightFromFeet: 0 48 | m_Mirror: 0 49 | m_EditorCurves: [] 50 | m_EulerEditorCurves: [] 51 | m_HasGenericRootTransform: 0 52 | m_HasMotionFloatCurves: 0 53 | m_Events: [] 54 | -------------------------------------------------------------------------------- /Assets/Animations/UI/default.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 872e952749447d542835393591a0ad2f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/pulse.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89f82f15d2bcdee458bf59d91c313c69 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Animations/UI/ui.controller: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1107 &-8075297891403486814 4 | AnimatorStateMachine: 5 | serializedVersion: 5 6 | m_ObjectHideFlags: 1 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Base Layer 11 | m_ChildStates: 12 | - serializedVersion: 1 13 | m_State: {fileID: 3830782157326801261} 14 | m_Position: {x: 350, y: -10, z: 0} 15 | - serializedVersion: 1 16 | m_State: {fileID: 5144141836324992700} 17 | m_Position: {x: 350, y: 100, z: 0} 18 | m_ChildStateMachines: [] 19 | m_AnyStateTransitions: 20 | - {fileID: -6928541070421588252} 21 | m_EntryTransitions: [] 22 | m_StateMachineTransitions: {} 23 | m_StateMachineBehaviours: [] 24 | m_AnyStatePosition: {x: 100, y: -140, z: 0} 25 | m_EntryPosition: {x: 50, y: 90, z: 0} 26 | m_ExitPosition: {x: 800, y: 120, z: 0} 27 | m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} 28 | m_DefaultState: {fileID: 5144141836324992700} 29 | --- !u!1101 &-6928541070421588252 30 | AnimatorStateTransition: 31 | m_ObjectHideFlags: 1 32 | m_CorrespondingSourceObject: {fileID: 0} 33 | m_PrefabInstance: {fileID: 0} 34 | m_PrefabAsset: {fileID: 0} 35 | m_Name: 36 | m_Conditions: 37 | - m_ConditionMode: 1 38 | m_ConditionEvent: pulse 39 | m_EventTreshold: 0 40 | m_DstStateMachine: {fileID: 0} 41 | m_DstState: {fileID: 3830782157326801261} 42 | m_Solo: 0 43 | m_Mute: 0 44 | m_IsExit: 0 45 | serializedVersion: 3 46 | m_TransitionDuration: 0 47 | m_TransitionOffset: 0 48 | m_ExitTime: 0 49 | m_HasExitTime: 0 50 | m_HasFixedDuration: 0 51 | m_InterruptionSource: 0 52 | m_OrderedInterruption: 1 53 | m_CanTransitionToSelf: 1 54 | --- !u!1101 &-509865870487158698 55 | AnimatorStateTransition: 56 | m_ObjectHideFlags: 1 57 | m_CorrespondingSourceObject: {fileID: 0} 58 | m_PrefabInstance: {fileID: 0} 59 | m_PrefabAsset: {fileID: 0} 60 | m_Name: 61 | m_Conditions: [] 62 | m_DstStateMachine: {fileID: 0} 63 | m_DstState: {fileID: 5144141836324992700} 64 | m_Solo: 0 65 | m_Mute: 0 66 | m_IsExit: 0 67 | serializedVersion: 3 68 | m_TransitionDuration: 0 69 | m_TransitionOffset: 0 70 | m_ExitTime: 1 71 | m_HasExitTime: 1 72 | m_HasFixedDuration: 1 73 | m_InterruptionSource: 0 74 | m_OrderedInterruption: 1 75 | m_CanTransitionToSelf: 1 76 | --- !u!91 &9100000 77 | AnimatorController: 78 | m_ObjectHideFlags: 0 79 | m_CorrespondingSourceObject: {fileID: 0} 80 | m_PrefabInstance: {fileID: 0} 81 | m_PrefabAsset: {fileID: 0} 82 | m_Name: ui 83 | serializedVersion: 5 84 | m_AnimatorParameters: 85 | - m_Name: pulse 86 | m_Type: 9 87 | m_DefaultFloat: 0 88 | m_DefaultInt: 0 89 | m_DefaultBool: 0 90 | m_Controller: {fileID: 0} 91 | m_AnimatorLayers: 92 | - serializedVersion: 5 93 | m_Name: Base Layer 94 | m_StateMachine: {fileID: -8075297891403486814} 95 | m_Mask: {fileID: 0} 96 | m_Motions: [] 97 | m_Behaviours: [] 98 | m_BlendingMode: 0 99 | m_SyncedLayerIndex: -1 100 | m_DefaultWeight: 0 101 | m_IKPass: 0 102 | m_SyncedLayerAffectsTiming: 0 103 | m_Controller: {fileID: 9100000} 104 | --- !u!1102 &3830782157326801261 105 | AnimatorState: 106 | serializedVersion: 5 107 | m_ObjectHideFlags: 1 108 | m_CorrespondingSourceObject: {fileID: 0} 109 | m_PrefabInstance: {fileID: 0} 110 | m_PrefabAsset: {fileID: 0} 111 | m_Name: pulse 112 | m_Speed: 1 113 | m_CycleOffset: 0 114 | m_Transitions: 115 | - {fileID: -509865870487158698} 116 | m_StateMachineBehaviours: [] 117 | m_Position: {x: 50, y: 50, z: 0} 118 | m_IKOnFeet: 0 119 | m_WriteDefaultValues: 1 120 | m_Mirror: 0 121 | m_SpeedParameterActive: 0 122 | m_MirrorParameterActive: 0 123 | m_CycleOffsetParameterActive: 0 124 | m_TimeParameterActive: 0 125 | m_Motion: {fileID: 7400000, guid: 89f82f15d2bcdee458bf59d91c313c69, type: 2} 126 | m_Tag: 127 | m_SpeedParameter: 128 | m_MirrorParameter: 129 | m_CycleOffsetParameter: 130 | m_TimeParameter: 131 | --- !u!1102 &5144141836324992700 132 | AnimatorState: 133 | serializedVersion: 5 134 | m_ObjectHideFlags: 1 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInstance: {fileID: 0} 137 | m_PrefabAsset: {fileID: 0} 138 | m_Name: default 139 | m_Speed: 1 140 | m_CycleOffset: 0 141 | m_Transitions: [] 142 | m_StateMachineBehaviours: [] 143 | m_Position: {x: 50, y: 50, z: 0} 144 | m_IKOnFeet: 0 145 | m_WriteDefaultValues: 1 146 | m_Mirror: 0 147 | m_SpeedParameterActive: 0 148 | m_MirrorParameterActive: 0 149 | m_CycleOffsetParameterActive: 0 150 | m_TimeParameterActive: 0 151 | m_Motion: {fileID: 7400000, guid: 872e952749447d542835393591a0ad2f, type: 2} 152 | m_Tag: 153 | m_SpeedParameter: 154 | m_MirrorParameter: 155 | m_CycleOffsetParameter: 156 | m_TimeParameter: 157 | -------------------------------------------------------------------------------- /Assets/Animations/UI/ui.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e8617bf6c3d7539499608277b64d3c6f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Audio.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38eb2f8ae1800644590a85adcd9f3b45 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Audio/Music.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b4106c1095335f441998c0418ab1b69b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Audio/Music/Attribution.txt: -------------------------------------------------------------------------------- 1 | Hyperfun Kevin MacLeod (incompetech.com) 2 | Licensed under Creative Commons: By Attribution 3.0 License 3 | http://creativecommons.org/licenses/by/3.0/ -------------------------------------------------------------------------------- /Assets/Audio/Music/Attribution.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce3e42968b910c04c8f6c94e3627ad75 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Audio/Music/Hyperfun.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Audio/Music/Hyperfun.ogg -------------------------------------------------------------------------------- /Assets/Audio/Music/Hyperfun.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54f914e1258c5f4e90a9226d10af526 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Audio/SFX.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eacdd3d0a5bf68a4a8af4a3bd4cfce6b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Audio/SFX/Clear.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Audio/SFX/Clear.ogg -------------------------------------------------------------------------------- /Assets/Audio/SFX/Clear.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fd86baf1f32a4b6479125a722484681a 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Audio/SFX/Select.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Audio/SFX/Select.mp3 -------------------------------------------------------------------------------- /Assets/Audio/SFX/Select.mp3.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5db760126814a344da074153bc99dbf3 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Audio/SFX/Swap.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Audio/SFX/Swap.ogg -------------------------------------------------------------------------------- /Assets/Audio/SFX/Swap.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2d829c1174379ab48a80f4d313ea7b00 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d623772c8a4621749b0792cc0c045fc3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Fonts/HVD_Comic_Serif_Pro SDF - Outlined.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: HVD_Comic_Serif_Pro SDF - Outlined 11 | m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _Cube: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _FaceTex: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _MainTex: 35 | m_Texture: {fileID: 662638371664720243, guid: 5acc9473def56704cb8e1a5c8696e2b2, 36 | type: 2} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _OutlineTex: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | m_Floats: 44 | - _Ambient: 0.5 45 | - _Bevel: 0.5 46 | - _BevelClamp: 0 47 | - _BevelOffset: 0 48 | - _BevelRoundness: 0 49 | - _BevelWidth: 0 50 | - _BumpFace: 0 51 | - _BumpOutline: 0 52 | - _ColorMask: 15 53 | - _Diffuse: 0.5 54 | - _FaceDilate: 0 55 | - _FaceUVSpeedX: 0 56 | - _FaceUVSpeedY: 0 57 | - _GlowInner: 0.05 58 | - _GlowOffset: 0 59 | - _GlowOuter: 0.05 60 | - _GlowPower: 0.75 61 | - _GradientScale: 6 62 | - _LightAngle: 3.1416 63 | - _MaskSoftnessX: 0 64 | - _MaskSoftnessY: 0 65 | - _OutlineSoftness: 0 66 | - _OutlineUVSpeedX: 0 67 | - _OutlineUVSpeedY: 0 68 | - _OutlineWidth: 0.165 69 | - _PerspectiveFilter: 0.875 70 | - _Reflectivity: 10 71 | - _ScaleRatioA: 0.8333333 72 | - _ScaleRatioB: 0.6770833 73 | - _ScaleRatioC: 0.6770833 74 | - _ScaleX: 1 75 | - _ScaleY: 1 76 | - _ShaderFlags: 0 77 | - _Sharpness: 0 78 | - _SpecularPower: 2 79 | - _Stencil: 0 80 | - _StencilComp: 8 81 | - _StencilOp: 0 82 | - _StencilReadMask: 255 83 | - _StencilWriteMask: 255 84 | - _TextureHeight: 512 85 | - _TextureWidth: 512 86 | - _UnderlayDilate: 0 87 | - _UnderlayOffsetX: 0 88 | - _UnderlayOffsetY: 0 89 | - _UnderlaySoftness: 0 90 | - _VertexOffsetX: 0 91 | - _VertexOffsetY: 0 92 | - _WeightBold: 0.75 93 | - _WeightNormal: 0 94 | m_Colors: 95 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 96 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 97 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 98 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 99 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 100 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 101 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 102 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 103 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 104 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 105 | -------------------------------------------------------------------------------- /Assets/Fonts/HVD_Comic_Serif_Pro SDF - Outlined.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ea4f13637eb7f04f95e8ec4318ee3cd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Fonts/HVD_Comic_Serif_Pro SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5acc9473def56704cb8e1a5c8696e2b2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Fonts/HVD_Comic_Serif_Pro.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Fonts/HVD_Comic_Serif_Pro.otf -------------------------------------------------------------------------------- /Assets/Fonts/HVD_Comic_Serif_Pro.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 907cd8901c095274ba478c47744bd57b 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: HVD Comic Serif Pro 12 | fontNames: 13 | - HVD Comic Serif Pro 14 | fallbackFontReferences: [] 15 | customCharacters: 16 | fontRenderingMode: 0 17 | ascentCalculationMode: 1 18 | useLegacyBoundsCalculation: 0 19 | shouldRoundAdvanceValue: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eb316c75546da4f4e93ac5237e07efb5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/GameData.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: 11500000, guid: 9e63af0a87d5c2f45a27c8615bc44409, type: 3} 13 | m_Name: GameData 14 | m_EditorClassIdentifier: 15 | gems: 16 | - type: 0 17 | sprite: {fileID: 21300000, guid: 79b18e11270d6f74eabc9f276fc246b1, type: 3} 18 | minMatch: 3 19 | - type: 1 20 | sprite: {fileID: 21300000, guid: f992ddb52aed8dd48b4ebab310aa6ddb, type: 3} 21 | minMatch: 3 22 | - type: 2 23 | sprite: {fileID: 21300000, guid: d8ee221ae72623945a4e8716e25dd133, type: 3} 24 | minMatch: 3 25 | - type: 3 26 | sprite: {fileID: 21300000, guid: 3d5b0af664090b240983a3869c22adf2, type: 3} 27 | minMatch: 3 28 | - type: 4 29 | sprite: {fileID: 21300000, guid: c34afc091af3cb443a784ac50c8fbffa, type: 3} 30 | minMatch: 3 31 | - type: 5 32 | sprite: {fileID: 21300000, guid: de5cc90ca45c73a47bdc6f4df9ed323f, type: 3} 33 | minMatch: 3 34 | - type: 6 35 | sprite: {fileID: 21300000, guid: b165480f1284456469c068e6cb5fc650, type: 3} 36 | minMatch: 3 37 | specialGems: 38 | - name: Blender 39 | prefab: {fileID: 6539906006310958499, guid: e61eea144c3cdb646a313258d3e2629f, 40 | type: 3} 41 | audioClipInfos: 42 | - name: bgm 43 | clip: {fileID: 8300000, guid: f54f914e1258c5f4e90a9226d10af526, type: 3} 44 | - name: click 45 | clip: {fileID: 8300000, guid: 5db760126814a344da074153bc99dbf3, type: 3} 46 | - name: swap 47 | clip: {fileID: 8300000, guid: 2d829c1174379ab48a80f4d313ea7b00, type: 3} 48 | - name: match 49 | clip: {fileID: 8300000, guid: fd86baf1f32a4b6479125a722484681a, type: 3} 50 | comboMessages: 51 | - Cool! 52 | - Great!! 53 | - Perfect!!! 54 | - Glorious!!!! 55 | - Wonderful!!!!! 56 | -------------------------------------------------------------------------------- /Assets/Resources/GameData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dffda7e03a8d7bc48bde3ca9e3e6174e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b37327e924b7a224b9e669d07568e6d6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/Gems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf7562b23df3dc844b567b07d96fc990 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/Gems/blenderPrefab.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &6539906006310958499 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: 4666011545455166125} 12 | - component: {fileID: 2737918572922045918} 13 | - component: {fileID: 1562173510238005296} 14 | - component: {fileID: 4571077119328886446} 15 | - component: {fileID: 2100746632092338692} 16 | - component: {fileID: 8864377848082428839} 17 | m_Layer: 0 18 | m_Name: blenderPrefab 19 | m_TagString: Untagged 20 | m_Icon: {fileID: 0} 21 | m_NavMeshLayer: 0 22 | m_StaticEditorFlags: 0 23 | m_IsActive: 1 24 | --- !u!4 &4666011545455166125 25 | Transform: 26 | m_ObjectHideFlags: 0 27 | m_CorrespondingSourceObject: {fileID: 0} 28 | m_PrefabInstance: {fileID: 0} 29 | m_PrefabAsset: {fileID: 0} 30 | m_GameObject: {fileID: 6539906006310958499} 31 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 32 | m_LocalPosition: {x: 0, y: 0, z: 0} 33 | m_LocalScale: {x: 1, y: 1, z: 1} 34 | m_Children: [] 35 | m_Father: {fileID: 0} 36 | m_RootOrder: 0 37 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 38 | --- !u!212 &2737918572922045918 39 | SpriteRenderer: 40 | m_ObjectHideFlags: 0 41 | m_CorrespondingSourceObject: {fileID: 0} 42 | m_PrefabInstance: {fileID: 0} 43 | m_PrefabAsset: {fileID: 0} 44 | m_GameObject: {fileID: 6539906006310958499} 45 | m_Enabled: 1 46 | m_CastShadows: 0 47 | m_ReceiveShadows: 0 48 | m_DynamicOccludee: 1 49 | m_MotionVectors: 1 50 | m_LightProbeUsage: 1 51 | m_ReflectionProbeUsage: 1 52 | m_RayTracingMode: 0 53 | m_RenderingLayerMask: 1 54 | m_RendererPriority: 0 55 | m_Materials: 56 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 57 | m_StaticBatchInfo: 58 | firstSubMesh: 0 59 | subMeshCount: 0 60 | m_StaticBatchRoot: {fileID: 0} 61 | m_ProbeAnchor: {fileID: 0} 62 | m_LightProbeVolumeOverride: {fileID: 0} 63 | m_ScaleInLightmap: 1 64 | m_ReceiveGI: 1 65 | m_PreserveUVs: 0 66 | m_IgnoreNormalsForChartDetection: 0 67 | m_ImportantGI: 0 68 | m_StitchLightmapSeams: 1 69 | m_SelectedEditorRenderState: 0 70 | m_MinimumChartSize: 4 71 | m_AutoUVMaxDistance: 0.5 72 | m_AutoUVMaxAngle: 89 73 | m_LightmapParameters: {fileID: 0} 74 | m_SortingLayerID: 1968221097 75 | m_SortingLayer: 2 76 | m_SortingOrder: 0 77 | m_Sprite: {fileID: 21300000, guid: 0354b4b5bc64edb40a823bd8cb3c1d56, type: 3} 78 | m_Color: {r: 1, g: 1, b: 1, a: 1} 79 | m_FlipX: 0 80 | m_FlipY: 0 81 | m_DrawMode: 0 82 | m_Size: {x: 1, y: 1} 83 | m_AdaptiveModeThreshold: 0.5 84 | m_SpriteTileMode: 0 85 | m_WasSpriteAssigned: 1 86 | m_MaskInteraction: 0 87 | m_SpriteSortPoint: 0 88 | --- !u!50 &1562173510238005296 89 | Rigidbody2D: 90 | serializedVersion: 4 91 | m_ObjectHideFlags: 0 92 | m_CorrespondingSourceObject: {fileID: 0} 93 | m_PrefabInstance: {fileID: 0} 94 | m_PrefabAsset: {fileID: 0} 95 | m_GameObject: {fileID: 6539906006310958499} 96 | m_BodyType: 2 97 | m_Simulated: 1 98 | m_UseFullKinematicContacts: 0 99 | m_UseAutoMass: 0 100 | m_Mass: 1 101 | m_LinearDrag: 0 102 | m_AngularDrag: 0.05 103 | m_GravityScale: 1 104 | m_Material: {fileID: 0} 105 | m_Interpolate: 0 106 | m_SleepingMode: 1 107 | m_CollisionDetection: 0 108 | m_Constraints: 0 109 | --- !u!58 &4571077119328886446 110 | CircleCollider2D: 111 | m_ObjectHideFlags: 0 112 | m_CorrespondingSourceObject: {fileID: 0} 113 | m_PrefabInstance: {fileID: 0} 114 | m_PrefabAsset: {fileID: 0} 115 | m_GameObject: {fileID: 6539906006310958499} 116 | m_Enabled: 1 117 | m_Density: 1 118 | m_Material: {fileID: 0} 119 | m_IsTrigger: 1 120 | m_UsedByEffector: 0 121 | m_UsedByComposite: 0 122 | m_Offset: {x: 0, y: 0} 123 | serializedVersion: 2 124 | m_Radius: 0.45 125 | --- !u!95 &2100746632092338692 126 | Animator: 127 | serializedVersion: 3 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | m_GameObject: {fileID: 6539906006310958499} 133 | m_Enabled: 1 134 | m_Avatar: {fileID: 0} 135 | m_Controller: {fileID: 22100000, guid: 333db7bc857253b41997cb3bc05ecaa3, type: 2} 136 | m_CullingMode: 0 137 | m_UpdateMode: 0 138 | m_ApplyRootMotion: 0 139 | m_LinearVelocityBlending: 0 140 | m_WarningMessage: 141 | m_HasTransformHierarchy: 1 142 | m_AllowConstantClipSamplingOptimization: 1 143 | m_KeepAnimatorControllerStateOnDisable: 0 144 | --- !u!114 &8864377848082428839 145 | MonoBehaviour: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 6539906006310958499} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: 11500000, guid: f1aa9e80b27ef2d4ea995fe6f5d138c3, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | spriteRenderer: {fileID: 0} 157 | animator: {fileID: 0} 158 | position: {x: 0, y: 0} 159 | _type: 0 160 | _minMatch: 3 161 | activated: 0 162 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/Gems/blenderPrefab.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e61eea144c3cdb646a313258d3e2629f 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/Gems/gemPrefab.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &6539906006310958499 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: 4666011545455166125} 12 | - component: {fileID: 2737918572922045918} 13 | - component: {fileID: 1562173510238005296} 14 | - component: {fileID: 4571077119328886446} 15 | - component: {fileID: 2100746632092338692} 16 | - component: {fileID: 5978925978501162727} 17 | m_Layer: 0 18 | m_Name: gemPrefab 19 | m_TagString: Untagged 20 | m_Icon: {fileID: 0} 21 | m_NavMeshLayer: 0 22 | m_StaticEditorFlags: 0 23 | m_IsActive: 1 24 | --- !u!4 &4666011545455166125 25 | Transform: 26 | m_ObjectHideFlags: 0 27 | m_CorrespondingSourceObject: {fileID: 0} 28 | m_PrefabInstance: {fileID: 0} 29 | m_PrefabAsset: {fileID: 0} 30 | m_GameObject: {fileID: 6539906006310958499} 31 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 32 | m_LocalPosition: {x: 0, y: 0, z: 0} 33 | m_LocalScale: {x: 1, y: 1, z: 1} 34 | m_Children: [] 35 | m_Father: {fileID: 0} 36 | m_RootOrder: 0 37 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 38 | --- !u!212 &2737918572922045918 39 | SpriteRenderer: 40 | m_ObjectHideFlags: 0 41 | m_CorrespondingSourceObject: {fileID: 0} 42 | m_PrefabInstance: {fileID: 0} 43 | m_PrefabAsset: {fileID: 0} 44 | m_GameObject: {fileID: 6539906006310958499} 45 | m_Enabled: 1 46 | m_CastShadows: 0 47 | m_ReceiveShadows: 0 48 | m_DynamicOccludee: 1 49 | m_MotionVectors: 1 50 | m_LightProbeUsage: 1 51 | m_ReflectionProbeUsage: 1 52 | m_RayTracingMode: 0 53 | m_RenderingLayerMask: 1 54 | m_RendererPriority: 0 55 | m_Materials: 56 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 57 | m_StaticBatchInfo: 58 | firstSubMesh: 0 59 | subMeshCount: 0 60 | m_StaticBatchRoot: {fileID: 0} 61 | m_ProbeAnchor: {fileID: 0} 62 | m_LightProbeVolumeOverride: {fileID: 0} 63 | m_ScaleInLightmap: 1 64 | m_ReceiveGI: 1 65 | m_PreserveUVs: 0 66 | m_IgnoreNormalsForChartDetection: 0 67 | m_ImportantGI: 0 68 | m_StitchLightmapSeams: 1 69 | m_SelectedEditorRenderState: 0 70 | m_MinimumChartSize: 4 71 | m_AutoUVMaxDistance: 0.5 72 | m_AutoUVMaxAngle: 89 73 | m_LightmapParameters: {fileID: 0} 74 | m_SortingLayerID: 1968221097 75 | m_SortingLayer: 2 76 | m_SortingOrder: 0 77 | m_Sprite: {fileID: 21300000, guid: 79b18e11270d6f74eabc9f276fc246b1, type: 3} 78 | m_Color: {r: 1, g: 1, b: 1, a: 1} 79 | m_FlipX: 0 80 | m_FlipY: 0 81 | m_DrawMode: 0 82 | m_Size: {x: 1, y: 1} 83 | m_AdaptiveModeThreshold: 0.5 84 | m_SpriteTileMode: 0 85 | m_WasSpriteAssigned: 1 86 | m_MaskInteraction: 0 87 | m_SpriteSortPoint: 0 88 | --- !u!50 &1562173510238005296 89 | Rigidbody2D: 90 | serializedVersion: 4 91 | m_ObjectHideFlags: 0 92 | m_CorrespondingSourceObject: {fileID: 0} 93 | m_PrefabInstance: {fileID: 0} 94 | m_PrefabAsset: {fileID: 0} 95 | m_GameObject: {fileID: 6539906006310958499} 96 | m_BodyType: 2 97 | m_Simulated: 1 98 | m_UseFullKinematicContacts: 0 99 | m_UseAutoMass: 0 100 | m_Mass: 1 101 | m_LinearDrag: 0 102 | m_AngularDrag: 0.05 103 | m_GravityScale: 1 104 | m_Material: {fileID: 0} 105 | m_Interpolate: 0 106 | m_SleepingMode: 1 107 | m_CollisionDetection: 0 108 | m_Constraints: 0 109 | --- !u!58 &4571077119328886446 110 | CircleCollider2D: 111 | m_ObjectHideFlags: 0 112 | m_CorrespondingSourceObject: {fileID: 0} 113 | m_PrefabInstance: {fileID: 0} 114 | m_PrefabAsset: {fileID: 0} 115 | m_GameObject: {fileID: 6539906006310958499} 116 | m_Enabled: 1 117 | m_Density: 1 118 | m_Material: {fileID: 0} 119 | m_IsTrigger: 1 120 | m_UsedByEffector: 0 121 | m_UsedByComposite: 0 122 | m_Offset: {x: 0, y: 0} 123 | serializedVersion: 2 124 | m_Radius: 0.45 125 | --- !u!95 &2100746632092338692 126 | Animator: 127 | serializedVersion: 3 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | m_GameObject: {fileID: 6539906006310958499} 133 | m_Enabled: 1 134 | m_Avatar: {fileID: 0} 135 | m_Controller: {fileID: 9100000, guid: 954b782890db15840975fee254c4f6f2, type: 2} 136 | m_CullingMode: 0 137 | m_UpdateMode: 0 138 | m_ApplyRootMotion: 0 139 | m_LinearVelocityBlending: 0 140 | m_WarningMessage: 141 | m_HasTransformHierarchy: 1 142 | m_AllowConstantClipSamplingOptimization: 1 143 | m_KeepAnimatorControllerStateOnDisable: 0 144 | --- !u!114 &5978925978501162727 145 | MonoBehaviour: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 6539906006310958499} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: 11500000, guid: 7b7e17cd8a671454c8e21bce5d20495e, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | spriteRenderer: {fileID: 0} 157 | animator: {fileID: 0} 158 | position: {x: 0, y: 0} 159 | _type: 0 160 | _minMatch: 3 161 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/Gems/gemPrefab.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee923fc9a7f328f4fb32dfaee3e8ee2b 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92197ee94100ad341a40ac1bbf6886ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/UI/button.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbfc097802d337a4a98ef468f4d8c07c 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/sfxSourcePrefab.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &6190111919037368132 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: 6190111919037368130} 12 | - component: {fileID: 6190111919037368131} 13 | - component: {fileID: 2861895333768712533} 14 | m_Layer: 0 15 | m_Name: sfxSourcePrefab 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &6190111919037368130 22 | Transform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 6190111919037368132} 28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0, z: 0} 30 | m_LocalScale: {x: 1, y: 1, z: 1} 31 | m_Children: [] 32 | m_Father: {fileID: 0} 33 | m_RootOrder: 0 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | --- !u!82 &6190111919037368131 36 | AudioSource: 37 | m_ObjectHideFlags: 0 38 | m_CorrespondingSourceObject: {fileID: 0} 39 | m_PrefabInstance: {fileID: 0} 40 | m_PrefabAsset: {fileID: 0} 41 | m_GameObject: {fileID: 6190111919037368132} 42 | m_Enabled: 1 43 | serializedVersion: 4 44 | OutputAudioMixerGroup: {fileID: 0} 45 | m_audioClip: {fileID: 0} 46 | m_PlayOnAwake: 0 47 | m_Volume: 1 48 | m_Pitch: 1 49 | Loop: 0 50 | Mute: 0 51 | Spatialize: 0 52 | SpatializePostEffects: 0 53 | Priority: 128 54 | DopplerLevel: 1 55 | MinDistance: 1 56 | MaxDistance: 500 57 | Pan2D: 0 58 | rolloffMode: 0 59 | BypassEffects: 0 60 | BypassListenerEffects: 0 61 | BypassReverbZones: 0 62 | rolloffCustomCurve: 63 | serializedVersion: 2 64 | m_Curve: 65 | - serializedVersion: 3 66 | time: 0 67 | value: 1 68 | inSlope: 0 69 | outSlope: 0 70 | tangentMode: 0 71 | weightedMode: 0 72 | inWeight: 0.33333334 73 | outWeight: 0.33333334 74 | - serializedVersion: 3 75 | time: 1 76 | value: 0 77 | inSlope: 0 78 | outSlope: 0 79 | tangentMode: 0 80 | weightedMode: 0 81 | inWeight: 0.33333334 82 | outWeight: 0.33333334 83 | m_PreInfinity: 2 84 | m_PostInfinity: 2 85 | m_RotationOrder: 4 86 | panLevelCustomCurve: 87 | serializedVersion: 2 88 | m_Curve: 89 | - serializedVersion: 3 90 | time: 0 91 | value: 0 92 | inSlope: 0 93 | outSlope: 0 94 | tangentMode: 0 95 | weightedMode: 0 96 | inWeight: 0.33333334 97 | outWeight: 0.33333334 98 | m_PreInfinity: 2 99 | m_PostInfinity: 2 100 | m_RotationOrder: 4 101 | spreadCustomCurve: 102 | serializedVersion: 2 103 | m_Curve: 104 | - serializedVersion: 3 105 | time: 0 106 | value: 0 107 | inSlope: 0 108 | outSlope: 0 109 | tangentMode: 0 110 | weightedMode: 0 111 | inWeight: 0.33333334 112 | outWeight: 0.33333334 113 | m_PreInfinity: 2 114 | m_PostInfinity: 2 115 | m_RotationOrder: 4 116 | reverbZoneMixCustomCurve: 117 | serializedVersion: 2 118 | m_Curve: 119 | - serializedVersion: 3 120 | time: 0 121 | value: 1 122 | inSlope: 0 123 | outSlope: 0 124 | tangentMode: 0 125 | weightedMode: 0 126 | inWeight: 0.33333334 127 | outWeight: 0.33333334 128 | m_PreInfinity: 2 129 | m_PostInfinity: 2 130 | m_RotationOrder: 4 131 | --- !u!114 &2861895333768712533 132 | MonoBehaviour: 133 | m_ObjectHideFlags: 0 134 | m_CorrespondingSourceObject: {fileID: 0} 135 | m_PrefabInstance: {fileID: 0} 136 | m_PrefabAsset: {fileID: 0} 137 | m_GameObject: {fileID: 6190111919037368132} 138 | m_Enabled: 1 139 | m_EditorHideFlags: 0 140 | m_Script: {fileID: 11500000, guid: 415a101cb9d5b5d4a991a861050d225e, type: 3} 141 | m_Name: 142 | m_EditorClassIdentifier: 143 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/sfxSourcePrefab.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9aa6ea928faf8a4983e3f6d88aba8a7 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74c205347821a18418136cd323cd32f6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/main.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: 16f9a6fa28123d74d8dbe80c77a46a40 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/BaseGem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using Utilities; 6 | 7 | [RequireComponent(typeof(SpriteRenderer))] 8 | public class BaseGem : MonoBehaviour, ITouchable { 9 | 10 | Coroutine moveToCoroutine = null; 11 | Coroutine animationCoroutine = null; 12 | 13 | [HideInInspector] 14 | public SpriteRenderer spriteRenderer; 15 | [HideInInspector] 16 | public Animator animator; 17 | 18 | public Vector2Int position; 19 | 20 | [SerializeField] 21 | GemType _type; 22 | public virtual GemType type { 23 | get { return _type; } 24 | set { _type = value; } 25 | } 26 | 27 | [SerializeField] 28 | int _minMatch = 3; 29 | public virtual int minMatch { 30 | get { return _minMatch; } 31 | set { _minMatch = value; } 32 | } 33 | 34 | public virtual Func validateGem { 35 | get { 36 | return gem => gem.type == type; 37 | } 38 | } 39 | 40 | public virtual MatchInfo GetMatch() { 41 | return BoardController.GetCrossMatch(this, validateGem); 42 | } 43 | 44 | void Awake() { 45 | spriteRenderer = GetComponent(); 46 | animator = GetComponent(); 47 | } 48 | 49 | public void SetType(GemData gemData) { 50 | type = gemData.type; 51 | spriteRenderer.sprite = gemData.sprite; 52 | minMatch = gemData.minMatch; 53 | } 54 | 55 | public void SetPosition(Vector2Int position) { 56 | this.position = position; 57 | BoardController.gemBoard[position.x, position.y] = this; 58 | } 59 | 60 | public float MoveTo(Vector3 target, float speed, float delay = 0) { 61 | if(moveToCoroutine != null) 62 | StopCoroutine(moveToCoroutine); 63 | 64 | moveToCoroutine = StartCoroutine(IEMoveTo(target, speed, delay)); 65 | 66 | return ((target - transform.position).magnitude / speed) + delay; 67 | } 68 | 69 | IEnumerator IEMoveTo(Vector3 target, float speed, float delay) { 70 | yield return new WaitForSeconds(delay); 71 | float distance = (target - transform.position).magnitude; 72 | 73 | while(!Mathf.Approximately(0.0f, distance)) { 74 | transform.position = Vector3.MoveTowards( 75 | transform.position, target, speed * Time.deltaTime 76 | ); 77 | yield return null; 78 | distance = (target - transform.position).magnitude; 79 | } 80 | 81 | transform.position = target; 82 | 83 | } 84 | 85 | public float Creating(float delay = 0) { 86 | if(animationCoroutine != null) 87 | StopCoroutine(animationCoroutine); 88 | 89 | animator.SetTrigger("creating"); 90 | animationCoroutine = StartCoroutine(IEAnimationDelay(delay)); 91 | 92 | return animator.GetCurrentStateDuration() + delay; 93 | } 94 | 95 | public float Matched(float delay = 0) { 96 | if(animationCoroutine != null) 97 | StopCoroutine(animationCoroutine); 98 | 99 | animator.SetTrigger("matched"); 100 | animationCoroutine = StartCoroutine(IEAnimationDelay(delay)); 101 | 102 | return animator.GetCurrentStateDuration() + delay; 103 | } 104 | 105 | public void Hint(bool start = true) { 106 | animator.SetBool("hinting", start); 107 | } 108 | 109 | IEnumerator IEAnimationDelay(float delay) { 110 | animator.enabled = false; 111 | 112 | yield return new WaitForSeconds(delay); 113 | 114 | animator.enabled = true; 115 | } 116 | 117 | public void TouchDown() { 118 | 119 | } 120 | 121 | public void TouchDrag() { 122 | if(Vector2.Distance( 123 | transform.position, TouchController.touchPosition 124 | ) > 0.75f) { 125 | 126 | Vector2 delta = TouchController.touchPosition - 127 | transform.position; 128 | 129 | BaseGem otherGem; 130 | 131 | if(Mathf.Abs(delta.x) > Mathf.Abs(delta.y)) { 132 | 133 | int swapX = (int) (position.x + Mathf.Sign(delta.x)); 134 | otherGem = BoardController.GetGem(swapX, position.y); 135 | } else { 136 | 137 | int swapY = (int) (position.y + Mathf.Sign(delta.y)); 138 | otherGem = BoardController.GetGem(position.x, swapY); 139 | } 140 | 141 | if(otherGem) { 142 | BoardController.TryMatch(this, otherGem); 143 | SoundController.PlaySfx(GameData.GetAudioClip("swap")); 144 | } 145 | 146 | TouchUp(); 147 | } 148 | 149 | } 150 | 151 | public void TouchUp() { 152 | TouchController.ClearElementClicked(); 153 | } 154 | 155 | public void DestroyGem() { 156 | Destroy(gameObject, Matched()); 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /Assets/Scripts/BaseGem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b7e17cd8a671454c8e21bce5d20495e 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/BlenderGem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | // Special Gem (Blender) Match all Gems in same Row and Column 7 | // Future improvement create generic class for Special Gems 8 | public class BlenderGem : BaseGem { 9 | 10 | List blenders = new List(); 11 | 12 | public bool activated; 13 | 14 | public override GemType type { 15 | get { return GemType.Special; } 16 | } 17 | 18 | public override int minMatch { 19 | get { return 0; } 20 | } 21 | 22 | public override Func validateGem { 23 | get { 24 | return (gem) => { 25 | if(gem is BlenderGem) { 26 | if(!(gem as BlenderGem).activated) { 27 | (gem as BlenderGem).activated = true; 28 | blenders.Add(gem as BlenderGem); 29 | } 30 | 31 | return false; 32 | } 33 | 34 | return true; 35 | }; 36 | } 37 | } 38 | 39 | void OnEnable() { 40 | BoardController.EndUpdatingBoard += ResetSpecialGem; 41 | } 42 | 43 | 44 | void OnDisable() { 45 | BoardController.EndUpdatingBoard -= ResetSpecialGem; 46 | } 47 | 48 | public override MatchInfo GetMatch() { 49 | MatchInfo matchInfo = BoardController.GetCrossMatch(this, validateGem); 50 | List matchInfosChain = new List(); 51 | 52 | activated = true; 53 | 54 | foreach(var blender in blenders) { 55 | MatchInfo blenderChain = blender.GetMatch(); 56 | blenderChain.RemoveMatches(matchInfo.matches); 57 | matchInfosChain.ForEach(m => blenderChain.RemoveMatches(m.matches)); 58 | matchInfosChain.Add(blenderChain); 59 | matchInfosChain.AddRange(blenderChain.specialMatches); 60 | } 61 | 62 | matchInfo.specialMatches.AddRange(matchInfosChain); 63 | 64 | return matchInfo; 65 | } 66 | 67 | public void ResetSpecialGem() { 68 | blenders.Clear(); 69 | activated = false; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Assets/Scripts/BlenderGem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1aa9e80b27ef2d4ea995fe6f5d138c3 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/Controllers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 08655faa962e71641b465d7eccd583f7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/BoardController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2fbd309908a7484f87fa30ed2c865d2 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/Controllers/GameController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25a613a1c35d4354bb7f368b676d0725 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/Controllers/HintController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Utilities; 5 | 6 | [System.Serializable] 7 | public class HintInfo { 8 | public BaseGem gem; 9 | public BaseGem currentSwap; 10 | public List swaps = new List(); 11 | 12 | public HintInfo(BaseGem gem) { 13 | this.gem = gem; 14 | } 15 | } 16 | 17 | public class HintController : SingletonMonoBehaviour { 18 | 19 | List hints = new List(); 20 | HintInfo currentHint; 21 | Coroutine hinting; 22 | 23 | public float hintDelay = 30f; 24 | 25 | public static bool hasHints { 26 | get { return instance.hints.Count > 0; } 27 | } 28 | 29 | public static bool isShowing { 30 | get { return instance.currentHint != null; } 31 | } 32 | 33 | public static bool paused; 34 | 35 | HintInfo GetHint(BaseGem gem, BaseGem otherGem) { 36 | if(!(gem && otherGem)) 37 | return null; 38 | 39 | HintInfo hintInfo = null; 40 | 41 | HintInfo hintA = hints.Find(h => h.gem == gem); 42 | HintInfo hintB = hints.Find(h => h.gem == otherGem); 43 | 44 | BoardController.SwapGems(gem, otherGem); 45 | 46 | MatchInfo matchA = gem.GetMatch(); 47 | MatchInfo matchB = otherGem.GetMatch(); 48 | 49 | if(matchA.isValid) { 50 | hintInfo = hintA != null ? hintA : new HintInfo(gem); 51 | hintInfo.swaps.Add(otherGem); 52 | } else if(matchB.isValid) { 53 | hintInfo = hintB != null ? hintB : new HintInfo(otherGem); 54 | hintInfo.swaps.Add(gem); 55 | } 56 | 57 | BoardController.SwapGems(gem, otherGem); 58 | 59 | return hintInfo; 60 | } 61 | 62 | public static void FindHints() { 63 | instance.hints.Clear(); 64 | 65 | for(int j = 0; j < BoardController.height; ++j) { 66 | for(int i = 0; i < BoardController.width; ++i) { 67 | BaseGem gem = BoardController.GetGem(i, j); 68 | 69 | // Swap Right 70 | BaseGem otherGem = BoardController.GetGem(i + 1, j); 71 | if(otherGem && otherGem.type != gem.type) { 72 | HintInfo hintInfo = instance.GetHint(gem, otherGem); 73 | 74 | if(hintInfo != null && !instance.hints.Contains(hintInfo)) 75 | instance.hints.Add(hintInfo); 76 | } 77 | 78 | // Swap Up 79 | otherGem = BoardController.GetGem(i, j + 1); 80 | if(otherGem && otherGem.type != gem.type) { 81 | HintInfo hintInfo = instance.GetHint(gem, otherGem); 82 | 83 | if(hintInfo != null && !instance.hints.Contains(hintInfo)) 84 | instance.hints.Add(hintInfo); 85 | } 86 | } 87 | } 88 | } 89 | 90 | public static void ShowHint() { 91 | if(hasHints && !isShowing) { 92 | HintInfo hintInfo = instance.hints[ 93 | Random.Range(0, instance.hints.Count) 94 | ]; 95 | hintInfo.gem.Hint(); 96 | 97 | hintInfo.currentSwap = hintInfo.swaps[ 98 | Random.Range(0, hintInfo.swaps.Count) 99 | ]; 100 | hintInfo.currentSwap.Hint(); 101 | instance.currentHint = hintInfo; 102 | } 103 | } 104 | 105 | public static void StopCurrentHint() { 106 | if(isShowing) { 107 | instance.currentHint.gem.Hint(false); 108 | instance.currentHint.currentSwap.Hint(false); 109 | instance.currentHint = null; 110 | } 111 | } 112 | 113 | public static void StartHinting() { 114 | if(instance.hinting == null && !isShowing) 115 | instance.hinting = instance.StartCoroutine( 116 | instance.IEStartHinting() 117 | ); 118 | } 119 | 120 | public static void StopHinting() { 121 | if(instance.hinting != null) 122 | instance.StopCoroutine(instance.hinting); 123 | 124 | instance.hinting = null; 125 | } 126 | 127 | IEnumerator IEStartHinting() { 128 | 129 | paused = false; 130 | yield return new WaitForSecondsAndNotPaused(hintDelay, () => paused); 131 | 132 | ShowHint(); 133 | instance.hinting = null; 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/HintController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9a760e19a93fd642afaeee3c7848f33 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/Controllers/ITouchable.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public interface ITouchable { 6 | 7 | void TouchDown(); 8 | void TouchDrag(); 9 | void TouchUp(); 10 | } -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/ITouchable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35890ad2f326f164faf287e8a37bbbf2 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/Controllers/SFXInstance.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class SFXInstance : MonoBehaviour { 6 | AudioSource audioSource; 7 | void Start() { 8 | audioSource = GetComponent(); 9 | audioSource.Play(); 10 | } 11 | 12 | // Update is called once per frame 13 | void Update() { 14 | audioSource.mute = SoundController.soundMuted; 15 | if (!audioSource.isPlaying) { 16 | Destroy(gameObject, 0.5f); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/SFXInstance.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 415a101cb9d5b5d4a991a861050d225e 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/Controllers/SoundController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Utilities; 5 | 6 | public class SoundController : SingletonMonoBehaviour { 7 | 8 | AudioSource musicSource, 9 | sfxSource; 10 | 11 | public static bool soundMuted; 12 | 13 | public override void Awake() { 14 | base.Awake(); 15 | 16 | musicSource = gameObject.AddComponent(); 17 | musicSource.loop = true; 18 | sfxSource = gameObject.AddComponent(); 19 | } 20 | 21 | public static void PlayMusic(AudioClip clip, float volume) { 22 | if (instance.musicSource.clip == clip) 23 | return; 24 | //instance.musicSource.clip = clip; 25 | //instance.musicSource.volume = volume; 26 | //instance.musicSource.Play(); 27 | instance.StartCoroutine(instance.PlayMusicFade(clip, volume)); 28 | instance.musicSource.mute = soundMuted; 29 | } 30 | 31 | IEnumerator PlayMusicFade(AudioClip clip, float volume) { 32 | float t = 1, lastVolume = musicSource.volume; 33 | 34 | if (musicSource.isPlaying) { 35 | while (t > 0) { 36 | musicSource.volume = Mathf.Lerp(0, lastVolume, t); 37 | t -= 0.1f; 38 | yield return new WaitForSecondsRealtime(0.1f); 39 | } 40 | 41 | musicSource.Stop(); 42 | } 43 | 44 | musicSource.clip = clip; 45 | musicSource.volume = 0; 46 | musicSource.Play(); 47 | t = 0; 48 | 49 | while (t < volume) { 50 | musicSource.volume = Mathf.Lerp(0, volume, t); 51 | t += 0.1f; 52 | yield return new WaitForSecondsRealtime(0.1f); 53 | } 54 | 55 | musicSource.volume = volume; 56 | } 57 | 58 | public static void PlaySfx(AudioClip clip, float volume = 1f) { 59 | instance.sfxSource.mute = soundMuted; 60 | instance.sfxSource.clip = clip; 61 | instance.sfxSource.volume = volume; 62 | instance.sfxSource.Play(); 63 | } 64 | 65 | public void PlaySfxNonStatic(AudioClip clip) { 66 | instance.sfxSource.mute = soundMuted; 67 | instance.sfxSource.clip = clip; 68 | instance.sfxSource.volume = 1f; 69 | instance.sfxSource.Play(); 70 | } 71 | 72 | public static AudioSource PlaySfxInstance(AudioClip clip, float volume = 1f) { 73 | AudioSource sfxSource = Instantiate( 74 | Resources.Load("Prefabs/sfxSourcePrefab") 75 | ).GetComponent(); 76 | 77 | sfxSource.mute = soundMuted; 78 | sfxSource.clip = clip; 79 | sfxSource.volume = volume; 80 | sfxSource.Play(); 81 | return sfxSource; 82 | } 83 | 84 | public static void StopMusic() { 85 | instance.musicSource.Stop(); 86 | } 87 | 88 | public static void FadeOut(AudioSource asrc) { 89 | instance.StartCoroutine(instance.FadeOutEnum(asrc)); 90 | } 91 | 92 | IEnumerator FadeOutEnum(AudioSource asrc) { 93 | float t = 1, lastVolume = asrc.volume; 94 | if (asrc.isPlaying) { 95 | while (t > 0) { 96 | asrc.volume = Mathf.Lerp(0, lastVolume, t); 97 | t -= 0.1f; 98 | yield return new WaitForSecondsRealtime(0.1f); 99 | } 100 | 101 | asrc.Stop(); 102 | } 103 | } 104 | 105 | public static void Mute(bool mute = true) { 106 | instance.musicSource.mute = mute; 107 | instance.sfxSource.mute = mute; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/SoundController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9498db9afe7b07478edda29a79b0115 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/Controllers/TouchController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.EventSystems; 5 | using Utilities; 6 | 7 | public class TouchController : SingletonMonoBehaviour { 8 | 9 | public static Vector3 touchPosition; 10 | public static bool cancel = false; 11 | ITouchable elementClicked; 12 | 13 | void Update() { 14 | if (cancel) return; 15 | 16 | #if UNITY_EDITOR || UNITY_WEBGL 17 | 18 | HandleInputEditor(); 19 | 20 | #elif UNITY_ANDROID || UNITY_IOS 21 | 22 | HandleInput(); 23 | 24 | #endif 25 | } 26 | 27 | void HandleInput() { 28 | if (Input.touchCount == 1) { 29 | Touch touch = Input.GetTouch(0); 30 | touchPosition = (Vector2) Camera.main.ScreenToWorldPoint( 31 | touch.position 32 | ); 33 | 34 | RaycastHit2D raycastHit = Physics2D.Raycast( 35 | touchPosition, Vector3.forward, Mathf.Infinity 36 | ); 37 | 38 | if (elementClicked != null) { 39 | switch (touch.phase) { 40 | case TouchPhase.Moved: 41 | elementClicked.TouchDrag(); 42 | break; 43 | case TouchPhase.Ended: 44 | elementClicked.TouchUp(); 45 | elementClicked = null; 46 | break; 47 | } 48 | } else if (touch.phase == TouchPhase.Began) { 49 | if (raycastHit) { 50 | elementClicked = raycastHit.collider 51 | .GetComponent(); 52 | } 53 | if (elementClicked != null) 54 | elementClicked.TouchDown(); 55 | } 56 | } else { 57 | ClearElementClicked(); 58 | } 59 | } 60 | 61 | #if UNITY_EDITOR || UNITY_WEBGL 62 | Vector3 lastPosition; 63 | void HandleInputEditor() { 64 | lastPosition = touchPosition; 65 | touchPosition = (Vector2) Camera.main 66 | .ScreenToWorldPoint(Input.mousePosition); 67 | 68 | RaycastHit2D raycastHit = Physics2D.Raycast( 69 | touchPosition, Vector3.forward, Mathf.Infinity 70 | ); 71 | 72 | if (elementClicked != null) { 73 | if (Input.GetMouseButton(0)) { 74 | if (lastPosition != touchPosition) 75 | elementClicked.TouchDrag(); 76 | } else { 77 | elementClicked.TouchUp(); 78 | elementClicked = null; 79 | } 80 | } else if (Input.GetMouseButtonDown(0)) { 81 | if (raycastHit) { 82 | elementClicked = raycastHit.collider 83 | .GetComponent(); 84 | } 85 | 86 | if (elementClicked != null) 87 | elementClicked.TouchDown(); 88 | 89 | } 90 | } 91 | 92 | #endif 93 | 94 | public static void ClearElementClicked(ITouchable other) { 95 | if (instance.elementClicked == other) { 96 | ClearElementClicked(); 97 | } 98 | } 99 | 100 | public static void ClearElementClicked() { 101 | instance.elementClicked = null; 102 | } 103 | } -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/TouchController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99fa804086d7c984b9ad3af7e74762d2 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/Controllers/UIController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using Utilities; 4 | using TMPro; 5 | using UnityEngine; 6 | using UnityEngine.SceneManagement; 7 | using UnityEngine.UI; 8 | 9 | public class UIController : SingletonMonoBehaviour { 10 | 11 | [Header("Screens")] 12 | [SerializeField] 13 | CanvasGroup mainScreen; 14 | [SerializeField] 15 | CanvasGroup gameScreen; 16 | 17 | [Header("Game Screen")] 18 | 19 | [SerializeField] 20 | TextMeshProUGUI scoreText; 21 | 22 | [SerializeField] 23 | TextMeshProUGUI comboScoreText; 24 | 25 | [SerializeField] 26 | TextMeshProUGUI comboMultiplierText; 27 | 28 | [SerializeField] 29 | TextMeshProUGUI goalScoreText; 30 | [SerializeField] 31 | TextMeshProUGUI timeLeftText; 32 | [SerializeField] 33 | TextMeshProUGUI highscoreText; 34 | [SerializeField] 35 | TextMeshProUGUI msgText; 36 | 37 | CanvasGroup currentScreen; 38 | 39 | float timePulse; 40 | 41 | public static void ShowMainScreen() { 42 | UpdateHighScore(GameController.highscore); 43 | instance.StartCoroutine( 44 | instance.IEChangeScreen(instance.mainScreen, executeAfter: () => { 45 | GameController.ShowGemMenu(); 46 | }) 47 | ); 48 | } 49 | 50 | public static void ShowGameScreen() { 51 | 52 | UpdateScore(GameController.score); 53 | UpdateGoalScore(GameController.currentGoalScore); 54 | UpdateTimeLeft(GameController.timeLeft); 55 | instance.StartCoroutine( 56 | instance.IEChangeScreen(instance.gameScreen, () => { 57 | GameController.ShowGemMenu(false); 58 | }) 59 | ); 60 | } 61 | 62 | public static void UpdateScore(int score) { 63 | instance.scoreText.text = $"{ score }"; 64 | instance.scoreText.transform.parent 65 | .GetComponent().SetTrigger("pulse"); 66 | } 67 | 68 | public static void UpdateComboScore(int comboScore, int multiplier) { 69 | instance.comboScoreText.text = $"+{ comboScore / Mathf.Max(multiplier, 1) }"; 70 | instance.comboMultiplierText.text = multiplier > 1 ? $" x{ multiplier }" : ""; 71 | 72 | instance.comboScoreText.GetComponent().SetTrigger("pulse"); 73 | } 74 | 75 | 76 | public static void UpdateHighScore(int score) { 77 | instance.highscoreText.text = $"High Score: { score }"; 78 | } 79 | 80 | public static void UpdateGoalScore(int goalScore) { 81 | instance.goalScoreText.text = $"/{ goalScore }"; 82 | instance.goalScoreText.GetComponent().SetTrigger("pulse"); 83 | } 84 | 85 | public static void UpdateTimeLeft(float timeLeft) { 86 | if(timeLeft <= 30) { 87 | if(Time.time - instance.timePulse > 1f) { 88 | instance.timeLeftText.GetComponent().SetTrigger("pulse"); 89 | instance.timePulse = Time.time; 90 | SoundController.PlaySfxInstance(GameData.GetAudioClip("click")); 91 | } 92 | } else { 93 | instance.timePulse = 0; 94 | } 95 | 96 | System.TimeSpan timeSpan = System.TimeSpan.FromSeconds(timeLeft); 97 | string mm = timeSpan.Minutes.ToString("D2"); 98 | string ss = timeSpan.Seconds.ToString("D2"); 99 | instance.timeLeftText.text = $"{ mm }:{ ss }"; 100 | } 101 | 102 | public static void ShowMsg(string msg) { 103 | instance.msgText.text = $"{ msg }"; 104 | instance.msgText.transform.GetComponent().SetTrigger("pulse"); 105 | } 106 | 107 | IEnumerator IEChangeScreen( 108 | CanvasGroup screen, 109 | System.Action executeBefore = null, System.Action executeAfter = null 110 | ) { 111 | if(executeBefore != null) 112 | executeBefore(); 113 | 114 | screen.alpha = 0; 115 | screen.gameObject.SetActive(false); 116 | 117 | if(currentScreen) { 118 | while(currentScreen.alpha > 0) { 119 | currentScreen.alpha -= Time.deltaTime * 2; 120 | yield return null; 121 | } 122 | currentScreen.gameObject.SetActive(false); 123 | } 124 | 125 | currentScreen = screen; 126 | currentScreen.gameObject.SetActive(true); 127 | 128 | while(currentScreen.alpha < 1) { 129 | currentScreen.alpha += Time.deltaTime * 2; 130 | yield return null; 131 | } 132 | 133 | if(executeAfter != null) 134 | executeAfter(); 135 | } 136 | } -------------------------------------------------------------------------------- /Assets/Scripts/Controllers/UIController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cee22005971910f40b00440158e8a906 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/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f26669f2f8490a42a760e6f4fb2fc5f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Editor/PlayerPrefsEditor.cs: -------------------------------------------------------------------------------- 1 |  using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | using Utilities; 5 | 6 | public class PlayerPrefsEditor : EditorWindow { 7 | 8 | [MenuItem("Edit/Player Prefs")] 9 | public static void openWindow() { 10 | 11 | PlayerPrefsEditor window = (PlayerPrefsEditor) 12 | EditorWindow.GetWindow( 13 | typeof(PlayerPrefsEditor) 14 | ); 15 | 16 | window.titleContent = new GUIContent("Player Prefs"); 17 | window.Show(); 18 | 19 | } 20 | 21 | public enum FieldType { String , Integer, Float, Boolean } 22 | 23 | private FieldType fieldType = FieldType.String; 24 | private string setKey = ""; 25 | private string setVal = ""; 26 | private string error = null; 27 | 28 | void OnGUI() { 29 | 30 | EditorGUILayout.LabelField( 31 | "Player Prefs Editor", EditorStyles.boldLabel 32 | ); 33 | EditorGUILayout.LabelField("by RomejanicDev"); 34 | EditorGUILayout.Separator(); 35 | 36 | fieldType = (FieldType) EditorGUILayout.EnumPopup("Key Type", fieldType); 37 | setKey = EditorGUILayout.TextField("Key to Set", setKey); 38 | setVal = EditorGUILayout.TextField("Value to Set", setVal); 39 | 40 | if(error != null) { 41 | 42 | EditorGUILayout.HelpBox(error, MessageType.Error); 43 | 44 | } 45 | 46 | if(GUILayout.Button("Set Key")) { 47 | 48 | if(fieldType == FieldType.Integer) { 49 | 50 | int result; 51 | if(!int.TryParse(setVal, out result)) { 52 | 53 | error = "Invalid input \"" + setVal + "\""; 54 | return; 55 | 56 | } 57 | 58 | PlayerPrefs.SetInt(setKey, result); 59 | 60 | } else if(fieldType == FieldType.Float) { 61 | 62 | float result; 63 | if(!float.TryParse(setVal, out result)) { 64 | 65 | error = "Invalid input \"" + setVal + "\""; 66 | return; 67 | 68 | } 69 | 70 | PlayerPrefs.SetFloat(setKey, result); 71 | 72 | } else { 73 | 74 | PlayerPrefs.SetString(setKey, setVal); 75 | 76 | } 77 | 78 | PlayerPrefs.Save(); 79 | error = null; 80 | 81 | } 82 | 83 | if(GUILayout.Button("Get Key")) { 84 | 85 | if(fieldType == FieldType.Integer) { 86 | 87 | setVal = PlayerPrefs.GetInt(setKey).ToString(); 88 | 89 | } else if(fieldType == FieldType.Float) { 90 | 91 | setVal = PlayerPrefs.GetFloat(setKey).ToString(); 92 | 93 | } else { 94 | 95 | setVal = PlayerPrefs.GetString(setKey); 96 | 97 | } 98 | 99 | } 100 | 101 | if(GUILayout.Button("Delete Key")) { 102 | 103 | PlayerPrefs.DeleteKey(setKey); 104 | PlayerPrefs.Save(); 105 | 106 | } 107 | 108 | if(GUILayout.Button("Delete All Keys")) { 109 | 110 | PlayerPrefs.DeleteAll(); 111 | PlayerPrefs.Save(); 112 | 113 | } 114 | 115 | } 116 | 117 | } 118 | 119 | -------------------------------------------------------------------------------- /Assets/Scripts/Editor/PlayerPrefsEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa892958dc7f4c84cadfda957e37e434 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/GameData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Utilities; 5 | 6 | public enum GemType { 7 | Milk, 8 | Apple, 9 | Orange, 10 | Bread, 11 | Lettuce, 12 | Coconut, 13 | Flower, 14 | Special 15 | } 16 | 17 | [System.Serializable] 18 | public class GemData { 19 | public GemType type; 20 | public Sprite sprite; 21 | public int minMatch = 3; 22 | } 23 | 24 | [System.Serializable] 25 | public class SpecialGemData { 26 | public string name; 27 | public GameObject prefab; 28 | } 29 | 30 | [System.Serializable] 31 | public class AudioClipInfo { 32 | public string name; 33 | public AudioClip clip; 34 | } 35 | 36 | [CreateAssetMenu(fileName = "GameData", menuName = "Match3/GameData", order = 1)] 37 | public class GameData : SingletonScriptableObject { 38 | 39 | [SerializeField] 40 | List gems = new List(); 41 | [SerializeField] 42 | List specialGems = new List(); 43 | [SerializeField] 44 | List audioClipInfos = new List(); 45 | [SerializeField] 46 | string[] comboMessages; 47 | public static int maxCombo { 48 | get { return instance.comboMessages.Length; } 49 | } 50 | 51 | public static GemData GemOfType(GemType type) { 52 | return instance.gems.Find(gem => gem.type == type); 53 | } 54 | 55 | public static GemData RandomGem() { 56 | return Miscellaneous.Choose(instance.gems); 57 | } 58 | 59 | public static GameObject GetSpecialGem(string name) { 60 | SpecialGemData sgd = instance.specialGems.Find(gem => gem.name == name); 61 | if(sgd != null) 62 | return sgd.prefab; 63 | 64 | return null; 65 | } 66 | 67 | public static AudioClip GetAudioClip(string name) { 68 | AudioClipInfo audioClipInfo = instance.audioClipInfos.Find( 69 | aci => aci.name == name 70 | ); 71 | 72 | if(audioClipInfo != null) 73 | return audioClipInfo.clip; 74 | 75 | return null; 76 | } 77 | 78 | public static string GetComboMessage(int combo) { 79 | return instance.comboMessages[combo]; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Assets/Scripts/GameData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e63af0a87d5c2f45a27c8615bc44409 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/MatchInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | [System.Flags] 7 | public enum MatchType { 8 | Invalid, //00000000 9 | Horizontal, //00000001 10 | Vertical, //00000010 11 | Cross //00000011 12 | } 13 | 14 | public class MatchInfo { 15 | Vector2Int minPosition; 16 | Vector2Int maxPosition; 17 | 18 | int horizontalLenght { 19 | get { return (maxPosition.x - minPosition.x) + 1; } 20 | } 21 | 22 | int verticalLenght { 23 | get { return (maxPosition.y - minPosition.y) + 1; } 24 | } 25 | 26 | public MatchType type; 27 | 28 | public bool isValid { 29 | get { return type != MatchType.Invalid; } 30 | } 31 | 32 | List _matches = new List(); 33 | public List matches { 34 | get { return new List(_matches); } 35 | } 36 | 37 | public List specialMatches = new List(); 38 | 39 | Vector2Int _pivot; 40 | public BaseGem pivot { 41 | get { 42 | if(type == MatchType.Cross) 43 | return _matches.Find(gem => gem.position == _pivot); 44 | else 45 | return _matches[0]; 46 | } 47 | } 48 | 49 | public MatchInfo(List matches = null) { 50 | if(matches != null) { 51 | _pivot = matches[0].position; 52 | AddMatches(matches); 53 | } 54 | } 55 | 56 | void AddMatches(List matches) { 57 | _matches.AddRange(matches); 58 | ValidateMatch(); 59 | } 60 | 61 | public void RemoveMatches(List matches) { 62 | _matches.RemoveAll(g => matches.Contains(g)); 63 | } 64 | 65 | void ValidateMatch() { 66 | type = MatchType.Invalid; 67 | minPosition = maxPosition = pivot.position; 68 | 69 | foreach(BaseGem match in _matches) { 70 | int x = minPosition.x; 71 | int y = minPosition.y; 72 | 73 | if(match.position.x < minPosition.x) 74 | x = match.position.x; 75 | if(match.position.y < minPosition.y) 76 | y = match.position.y; 77 | 78 | minPosition = new Vector2Int(x, y); 79 | 80 | x = maxPosition.x; 81 | y = maxPosition.y; 82 | 83 | if(match.position.x > maxPosition.x) 84 | x = match.position.x; 85 | if(match.position.y > maxPosition.y) 86 | y = match.position.y; 87 | 88 | maxPosition = new Vector2Int(x, y); 89 | 90 | if(horizontalLenght >= pivot.minMatch) 91 | type |= MatchType.Horizontal; 92 | 93 | if(verticalLenght >= pivot.minMatch) 94 | type |= MatchType.Vertical; 95 | } 96 | } 97 | 98 | public int GetScore() { 99 | if(!isValid) 100 | return 0; 101 | 102 | return _matches.Count; 103 | } 104 | 105 | // Join Crossed Matches from same type 106 | public static MatchInfo JoinCrossedMatches(MatchInfo a, MatchInfo b) { 107 | 108 | if(!(a.isValid && b.isValid) || a.pivot.type != b.pivot.type) { 109 | return new MatchInfo(); 110 | } 111 | 112 | foreach(BaseGem match in a._matches) { 113 | if(b._matches.Contains(match)) { 114 | a._pivot = match.position; 115 | b._matches.Remove(match); 116 | a.AddMatches(b._matches); 117 | 118 | return a; 119 | } 120 | } 121 | 122 | return new MatchInfo(); 123 | } 124 | 125 | public List GetFallPositions() { 126 | List fallPositions = new List(); 127 | 128 | _matches.ForEach(match => { 129 | int id = fallPositions.FindIndex(f => f.x == match.position.x); 130 | if(id > -1 && match.position.y < fallPositions[id].y) { 131 | fallPositions[id] = match.position; 132 | } else { 133 | fallPositions.Add(match.position); 134 | } 135 | }); 136 | 137 | return fallPositions; 138 | } 139 | 140 | public static List JoinFallPositions( 141 | List matchA, List matchB 142 | ) { 143 | List fallPositions = new List(); 144 | 145 | if(matchA.Count == 0) 146 | return matchB; 147 | else if(matchB.Count == 0) 148 | return matchA; 149 | 150 | fallPositions.AddRange(matchA); 151 | 152 | matchB.ForEach(currentFall => { 153 | int id = fallPositions.FindIndex(f => f.x == currentFall.x); 154 | if(id > -1 && currentFall.y < fallPositions[id].y) { 155 | fallPositions[id] = currentFall; 156 | } else { 157 | fallPositions.Add(currentFall); 158 | } 159 | }); 160 | 161 | return fallPositions; 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /Assets/Scripts/MatchInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c47c77db161564249958e94f878ddc68 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/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80eb48ab5c40c734a97fe8cee3475f86 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/Button.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | public class Button : MonoBehaviour { 6 | 7 | public TextMeshProUGUI buttonName; 8 | 9 | public void Pressed() { 10 | buttonName.rectTransform.offsetMin = new Vector2( 11 | buttonName.rectTransform.offsetMin.x, -20 12 | ); 13 | 14 | SoundController.PlaySfx(GameData.GetAudioClip("click")); 15 | } 16 | 17 | public void Released() { 18 | buttonName.rectTransform.offsetMin = new Vector2( 19 | buttonName.rectTransform.offsetMin.x, 10 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/Button.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 921e81c2d5d47fd4b8de86b20837d0b7 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/Utilities.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: caa02ee5224cf1447bb0f01ca5e37311 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Utilities/Miscellaneous.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62ed5e3d46a93b548b4690bf272723e3 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/Utilities/PlayerPrefsExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Utilities { 6 | public static class PlayerPrefsExtensions { 7 | 8 | public static void SetBool(string key, bool value) { 9 | PlayerPrefs.SetInt(key, value ? 1 : 0); 10 | } 11 | 12 | public static bool GetBool(string key, bool value = false) { 13 | return PlayerPrefs.GetInt(key, value ? 1 : 0) != 0; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Assets/Scripts/Utilities/PlayerPrefsExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ab8e4a6eac3ef640a1e20aeeb0d2ec8 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/Utilities/SingletonMonoBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | namespace Utilities { 7 | public abstract class SingletonScriptableObject : 8 | ScriptableObject where T : ScriptableObject { 9 | static T _instance = null; 10 | public static T instance { 11 | get { 12 | if (!_instance) 13 | _instance = Resources.FindObjectsOfTypeAll() 14 | .FirstOrDefault(); 15 | return _instance; 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Assets/Scripts/Utilities/SingletonMonoBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3b5164b9145fe848b7a528412857360 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/Utilities/SingletonScriptableObject.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Utilities { 6 | public class SingletonMonoBehaviour : 7 | MonoBehaviour where T : Component { 8 | 9 | static T _ins; 10 | 11 | public static T instance { 12 | get { return _ins; } 13 | } 14 | 15 | public virtual void Awake() { 16 | if (_ins == null) { 17 | _ins = this as T; 18 | } else { 19 | Destroy(this); 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Assets/Scripts/Utilities/SingletonScriptableObject.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 30a7a20570cc6bc40a4e90f688c798df 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/Utilities/WaitForSecondsAndNotPaused.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | namespace Utilities { 7 | public class WaitForSecondsAndNotPaused : CustomYieldInstruction { 8 | 9 | float seconds; 10 | Func isPaused; 11 | float initialTime; 12 | 13 | bool paused { 14 | get { 15 | if(isPaused()) { 16 | seconds -= Mathf.Max(deltaTime, 0); 17 | initialTime = Time.time; 18 | } 19 | return isPaused(); 20 | } 21 | } 22 | 23 | float deltaTime { 24 | get { return Time.time - initialTime; } 25 | } 26 | 27 | public override bool keepWaiting { 28 | get 29 | { 30 | return paused || (deltaTime < seconds); 31 | } 32 | } 33 | 34 | public WaitForSecondsAndNotPaused( 35 | float seconds, Func isPaused 36 | ) { 37 | this.seconds = seconds; 38 | this.isPaused = isPaused; 39 | initialTime = Time.time; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Assets/Scripts/Utilities/WaitForSecondsAndNotPaused.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a226badcf067a948bd22c406a396950 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53432877ae2b1f84782f81afbd016476 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2595b6a6df4ac684b8171c53e2ba1002 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/blender.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/blender.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/blender.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0354b4b5bc64edb40a823bd8cb3c1d56 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 288 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0001.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0001.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79b18e11270d6f74eabc9f276fc246b1 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0002.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0002.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f992ddb52aed8dd48b4ebab310aa6ddb 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0003.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0003.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8ee221ae72623945a4e8716e25dd133 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0004.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0004.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d5b0af664090b240983a3869c22adf2 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0005.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0005.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c34afc091af3cb443a784ac50c8fbffa 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0006.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0006.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de5cc90ca45c73a47bdc6f4df9ed323f 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/Gems/characters_0007.png -------------------------------------------------------------------------------- /Assets/Sprites/Gems/characters_0007.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b165480f1284456469c068e6cb5fc650 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 256 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6da724bb62d364a4e8cfec641ac3fc25 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/bg.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/bg.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca7a2c2293196274eabf71ab604cc06f 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 64 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/button_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/button_down.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/button_down.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62066e2da6be6074dbf5f0317fe1cc31 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 128 49 | spriteBorder: {x: 40, y: 44, z: 40, w: 56} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/button_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/button_up.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/button_up.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2afefc6d09a00e74491ee9e2c31670b6 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 128 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/inGameCounter_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/inGameCounter_bar.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/inGameCounter_bar.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d1774f1da363a34aaec3cfeb22e51c1 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 9 47 | spritePivot: {x: 0.03515625, y: 0.5} 48 | spritePixelsToUnits: 128 49 | spriteBorder: {x: 0, y: 121, z: 36, w: 121} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/inGame_counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/inGame_counter.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/inGame_counter.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b99b1fe117e394942804747f49f7f16c 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 128 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: Android 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: WebGL 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Sprites/UI/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/UI/logo.png -------------------------------------------------------------------------------- /Assets/Sprites/UI/logo.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20aa456da5f037342960ee8c9f940607 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 5e97eb03825dee720800000000000000 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Sprites/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/Assets/Sprites/square.png -------------------------------------------------------------------------------- /Assets/Sprites/square.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a28a47bc8d802fd499fc4a7c5611b8bb 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 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 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 0 35 | aniso: 1 36 | mipBias: 0 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 3 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 4 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: 4 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: 78 | - - {x: -2, y: -2} 79 | - {x: -2, y: 2} 80 | - {x: 2, y: 2} 81 | - {x: 2, y: -2} 82 | physicsShape: 83 | - - {x: -2, y: -2} 84 | - {x: -2, y: 2} 85 | - {x: 2, y: 2} 86 | - {x: 2, y: -2} 87 | bones: [] 88 | spriteID: 5e97eb03825dee720800000000000000 89 | internalID: 0 90 | vertices: [] 91 | indices: 92 | edges: [] 93 | weights: [] 94 | secondaryTextures: [] 95 | spritePackingTag: 96 | pSDRemoveMatte: 0 97 | pSDShowRemoveMatteOption: 0 98 | userData: 99 | assetBundleName: 100 | assetBundleVariant: 101 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54d1bd14bd3ca042bd867b519fee8cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25f0df8f35a27f0479fbd8edbf5008ca 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a140d427e6f167439b8b8008a83832f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Unity WebGL Player | Match 3 8 | 9 | 10 | 19 | 20 | 21 |
22 |
23 | Click to Load! 24 |
25 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/index.html.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5de0f62264e017d4a8cee6b8d7871b0d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/scripts.js: -------------------------------------------------------------------------------- 1 | // Set height of body to match the inner height of window 2 | function setInnerHeight() { 3 | let vh = (window.innerHeight) * 0.01; 4 | document.documentElement.style.setProperty('--vh', `${vh}px`); 5 | } 6 | 7 | const screen = document.querySelector('#unityContainer'); 8 | const footer = document.querySelector('footer'); 9 | 10 | // Calculate the canvas size 11 | function resizeCanvas() { 12 | 13 | const width = Number(screen.style.width.replace('px', '')); 14 | const height = Number(screen.style.height.replace('px', '')); 15 | const aspectRatio = height / width; 16 | screen.style.width = screen.style.height = '0px'; 17 | setInnerHeight(); 18 | 19 | let minDimensionScreen = Math.min(window.innerWidth, window.innerHeight); 20 | 21 | if(minDimensionScreen === window.innerHeight) { 22 | minDimensionScreen *= .875; 23 | 24 | screen.style.width = `${ minDimensionScreen / aspectRatio }px`; 25 | screen.style.height = `${ minDimensionScreen }px`; 26 | } else { 27 | screen.style.width = `${ window.innerWidth }px`; 28 | screen.style.height = `${ window.innerHeight }px`; 29 | } 30 | } 31 | 32 | resizeCanvas() 33 | 34 | window.addEventListener('resize', () => setTimeout(resizeCanvas, 1)) 35 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/scripts.js.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac5eea445d8f4c74a950f612f1f99799 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --primary-text-color: #4cff2c; 3 | } 4 | 5 | * { 6 | margin: 0; 7 | padding: 0; 8 | box-sizing: border-box; 9 | } 10 | 11 | html { 12 | font-size: 62.5%; 13 | } 14 | 15 | html, body { 16 | min-height: 100vh; 17 | min-height: calc(var(--vh, 1vh) * 100); 18 | } 19 | 20 | body { 21 | background-color: black; 22 | 23 | font-family: 'Fira Code', monospace; 24 | font-size: 1.6rem; 25 | color: var(--primary-text-color); 26 | 27 | display: flex; 28 | flex-direction: column; 29 | 30 | align-items: center; 31 | justify-content: center; 32 | 33 | overflow: hidden; 34 | } 35 | 36 | body > * { 37 | margin-top: auto; 38 | } 39 | 40 | #unityContainer { 41 | position: relative; 42 | } 43 | 44 | #unityContainer canvas { 45 | display: block; 46 | border: 2px solid var(--primary-text-color); 47 | } 48 | 49 | #load { 50 | position: absolute; 51 | font-size: 2em; 52 | } 53 | 54 | /* === FOOTER === */ 55 | 56 | footer { 57 | padding: 1.6rem 0; 58 | 59 | font-size: 1.4rem; 60 | text-align: center; 61 | } 62 | 63 | footer #social { 64 | margin: 0 auto; 65 | margin-top: 1.6rem; 66 | display: flex; 67 | justify-content: center; 68 | } 69 | 70 | footer #social a + a { 71 | margin-left: 3.2rem; 72 | } 73 | 74 | footer #social svg { 75 | width: 1.6rem; 76 | 77 | fill: var(--primary-text-color); 78 | opacity: 0.5; 79 | 80 | transition: opacity 200ms; 81 | } 82 | 83 | footer #social svg:hover { 84 | opacity: 1; 85 | } 86 | 87 | @media (max-width: 340px) { 88 | html { 89 | font-size: 55%; 90 | } 91 | } -------------------------------------------------------------------------------- /Assets/WebGLTemplates/Mobile (Portrait) - Diego Moreira/style.css.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25e3c299f34f7f9418226d50fbae7fd7 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.animation": "3.2.1", 4 | "com.unity.2d.pixel-perfect": "2.0.4", 5 | "com.unity.2d.psdimporter": "2.1.3", 6 | "com.unity.2d.sprite": "1.0.0", 7 | "com.unity.2d.spriteshape": "3.0.10", 8 | "com.unity.2d.tilemap": "1.0.0", 9 | "com.unity.collab-proxy": "1.2.16", 10 | "com.unity.ide.rider": "1.1.4", 11 | "com.unity.ide.vscode": "1.2.0", 12 | "com.unity.test-framework": "1.1.13", 13 | "com.unity.textmeshpro": "2.0.1", 14 | "com.unity.timeline": "1.2.14", 15 | "com.unity.ugui": "1.0.0", 16 | "com.unity.modules.ai": "1.0.0", 17 | "com.unity.modules.androidjni": "1.0.0", 18 | "com.unity.modules.animation": "1.0.0", 19 | "com.unity.modules.assetbundle": "1.0.0", 20 | "com.unity.modules.audio": "1.0.0", 21 | "com.unity.modules.cloth": "1.0.0", 22 | "com.unity.modules.director": "1.0.0", 23 | "com.unity.modules.imageconversion": "1.0.0", 24 | "com.unity.modules.imgui": "1.0.0", 25 | "com.unity.modules.jsonserialize": "1.0.0", 26 | "com.unity.modules.particlesystem": "1.0.0", 27 | "com.unity.modules.physics": "1.0.0", 28 | "com.unity.modules.physics2d": "1.0.0", 29 | "com.unity.modules.screencapture": "1.0.0", 30 | "com.unity.modules.terrain": "1.0.0", 31 | "com.unity.modules.terrainphysics": "1.0.0", 32 | "com.unity.modules.tilemap": "1.0.0", 33 | "com.unity.modules.ui": "1.0.0", 34 | "com.unity.modules.uielements": "1.0.0", 35 | "com.unity.modules.umbra": "1.0.0", 36 | "com.unity.modules.unityanalytics": "1.0.0", 37 | "com.unity.modules.unitywebrequest": "1.0.0", 38 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 39 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 40 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 41 | "com.unity.modules.unitywebrequestwww": "1.0.0", 42 | "com.unity.modules.vehicles": "1.0.0", 43 | "com.unity.modules.video": "1.0.0", 44 | "com.unity.modules.vr": "1.0.0", 45 | "com.unity.modules.wind": "1.0.0", 46 | "com.unity.modules.xr": "1.0.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/main.unity 10 | guid: 2cda990e2423bbf4892e6590ba056729 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 1 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 4 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 37 | m_PreloadedShaders: [] 38 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 39 | type: 0} 40 | m_CustomRenderPipeline: {fileID: 0} 41 | m_TransparencySortMode: 0 42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 43 | m_DefaultRenderingPath: 1 44 | m_DefaultMobileRenderingPath: 1 45 | m_TierSettings: [] 46 | m_LightmapStripping: 0 47 | m_FogStripping: 0 48 | m_InstancingStripping: 0 49 | m_LightmapKeepPlain: 1 50 | m_LightmapKeepDirCombined: 1 51 | m_LightmapKeepDynamicPlain: 1 52 | m_LightmapKeepDynamicDirCombined: 1 53 | m_LightmapKeepShadowMask: 1 54 | m_LightmapKeepSubtractive: 1 55 | m_FogKeepLinear: 1 56 | m_FogKeepExp: 1 57 | m_FogKeepExp2: 1 58 | m_AlbedoSwatchInfos: [] 59 | m_LightsUseLinearIntensity: 0 60 | m_LightsUseColorTemperature: 0 61 | m_LogWhenShaderIsCompiled: 0 62 | m_AllowEnlightenSupportForUpgradedProject: 1 63 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.3.13f1 2 | m_EditorVersionWithRevision: 2019.3.13f1 (d4ddf0d95db9) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 3 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 0 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 0 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 0 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 0 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 0 112 | billboardsFaceCameraPosition: 0 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 0 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 0 136 | antiAliasing: 0 137 | softParticles: 0 138 | softVegetation: 1 139 | realtimeReflectionProbes: 0 140 | billboardsFaceCameraPosition: 0 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 0 153 | shadowResolution: 0 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 0 164 | antiAliasing: 0 165 | softParticles: 0 166 | softVegetation: 1 167 | realtimeReflectionProbes: 0 168 | billboardsFaceCameraPosition: 0 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Stadia: 5 185 | Standalone: 5 186 | Tizen: 2 187 | WebGL: 3 188 | WiiU: 5 189 | Windows Store Apps: 5 190 | XboxOne: 5 191 | iPhone: 2 192 | tvOS: 2 193 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | - name: Background 45 | uniqueID: 3536448753 46 | locked: 0 47 | - name: Middleground 48 | uniqueID: 1968221097 49 | locked: 0 50 | - name: Foreground 51 | uniqueID: 2509737311 52 | locked: 0 53 | - name: UI 54 | uniqueID: 1280980875 55 | locked: 0 56 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ![Logo](docs/previews/logo.png) 4 | 5 |
6 | 7 | Jogo Combine 3, desenvolvido na Unity. 8 | 9 |
10 | 11 |
12 | 13 | ## 📑 Indíce 14 | 15 | - [📜 Sobre](#-sobre) 16 | - [💻 Tecnologias](#-tecnologias) 17 | - [⚠️ Instalação](#%EF%B8%8F-instalação) 18 | - [💡 Features Adicionais](#-features-adicionais) 19 | - [📦 Builds](#-builds) 20 | 21 | ## 📜 Sobre 22 | 23 | Clássico jogo de combinar 3, desenvolvido para o desafio proposto pela [PlayKids](https://playkids.com/). Segue o escopo solicitado: 24 | 25 | - Combine 3 ou mais itens (linhas ou colunas) para destruí-los. 26 | - Ganhe pontos por cada combinação. 27 | - Atinja a pontuação determinada antes do tempo (2 min) acabar. Sempre que alcançar o objetivo, incrementa-lo e reiniciar o contador de tempo. 28 | - A cada combinação, os itens descem para ocupar as posições vazias, e novos itens são criados no topo. 29 | - Embaralhar o tabuleiro, caso não exista possibilidades. 30 | - Utilizar os assets disponibilizados. 31 | - Os elementos visuais devem funcionar em diferentes resoluções em modo retrato (Portrait). 32 | - Ser desenvolvido em C# utilizando Unity na versão 2018 ou superior. 33 | 34 | ## 💻 Tecnologias 35 | 36 | - C# 37 | - Unity (version: [2019.3.13f1](https://unity3d.com/pt/get-unity/download/archive?_ga=2.118344778.2126703189.1592841786-2050972297.1592582956)) 38 | 39 | ## ⚠️ Instalação 40 | 41 | Ao abrir o projeto na Unity, certifique-se de instalar os requerimentos do plugin TextMesh Pro: 42 | 43 | Window -> TextMeshPro -> Import TMP Essential Resources 44 | 45 | Este plugin foi utilizado para os componentes de texto. 46 | 47 | Para mais informações sobre o plugin acesse: https://docs.unity3d.com/Packages/com.unity.textmeshpro@2.0/manual/index.html 48 | 49 | ## 💡 Features Adicionais 50 | 51 | ### Highscore 52 | 53 | A pontuação mais alta fica armazenada, sendo apresentada na tela principal. 54 | 55 |
56 | 57 | ![Match 3 Game](docs/previews/intro.gif) 58 | 59 |
60 | 61 | ### Dicas 62 | 63 | Depois de um tempo sem combinações, o jogo sugestiona uma possibilidade. 64 | 65 |
66 | 67 | ![Dica](docs/previews/hinting.gif) 68 | 69 |
70 | 71 | ### Combos 72 | 73 | Combinações seguidas adicionam um multiplicador a pontuação recebida. 74 | 75 |
76 | 77 | ![Combos](docs/previews/combo.gif) 78 | 79 |
80 | 81 | ### Item especial 82 | 83 | Uma combinação em ambas as direções, cria um item especial, Liquidificador. Ele combina com a linha e coluna completa em que for movido. 84 | 85 |
86 | 87 | ![Liquidificador em Uso](docs/previews/blender.gif) 88 | 89 |
90 | 91 | ### Artes adicionais 92 | 93 | As artes do liquidificador e da logo foram criadas e disponibilizadas pelo incrível Ilustrador e UX/UI Designer [Yarick Ivens](https://www.behance.net/yarickivens)! 94 | 95 |
96 | 97 | ![Ícone Liquidificador](docs/previews/blender.png) 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 |
106 | 107 | ## 📦 Builds 108 | 109 | O jogo está disponível nas seguintes plataformas: 110 | 111 | - [🌐 Web (WebGL)](https://diegomoreira.dev/match-3-unity/) 112 | - [📱 Mobile (Android)](https://bit.ly/match-3-game) 113 | 114 | --- 115 | 116 |
117 |
Desenvolvido por 🤘 Diego Moreira
118 |
119 | 120 | My Linkedin 121 | 122 | 123 | My Linkedin 124 | 125 |
126 | -------------------------------------------------------------------------------- /docs/Build/docs.data.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/docs.data.unityweb -------------------------------------------------------------------------------- /docs/Build/docs.json: -------------------------------------------------------------------------------- 1 | { 2 | "companyName": "diegyohoho", 3 | "productName": "Match 3", 4 | "productVersion": "0.1", 5 | "dataUrl": "docs.data.unityweb", 6 | "wasmCodeUrl": "docs.wasm.code.unityweb", 7 | "wasmFrameworkUrl": "docs.wasm.framework.unityweb", 8 | "graphicsAPI": ["WebGL 2.0","WebGL 1.0"], 9 | "webglContextAttributes": {"preserveDrawingBuffer": false}, 10 | "splashScreenStyle": "Dark", 11 | "backgroundColor": "#231F20", 12 | "cacheControl": {"default": "must-revalidate"}, 13 | "developmentBuild": false, 14 | "multithreading": false, 15 | "unityVersion": "2019.3.13f1" 16 | } -------------------------------------------------------------------------------- /docs/Build/docs.wasm.code.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/docs.wasm.code.unityweb -------------------------------------------------------------------------------- /docs/Build/docs.wasm.framework.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/docs.wasm.framework.unityweb -------------------------------------------------------------------------------- /docs/Build/public.data.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/public.data.unityweb -------------------------------------------------------------------------------- /docs/Build/public.json: -------------------------------------------------------------------------------- 1 | { 2 | "companyName": "diegyohoho", 3 | "productName": "Match 3", 4 | "productVersion": "0.1", 5 | "dataUrl": "public.data.unityweb", 6 | "wasmCodeUrl": "public.wasm.code.unityweb", 7 | "wasmFrameworkUrl": "public.wasm.framework.unityweb", 8 | "graphicsAPI": ["WebGL 2.0","WebGL 1.0"], 9 | "webglContextAttributes": {"preserveDrawingBuffer": false}, 10 | "splashScreenStyle": "Dark", 11 | "backgroundColor": "#231F20", 12 | "cacheControl": {"default": "must-revalidate"}, 13 | "developmentBuild": false, 14 | "multithreading": false, 15 | "unityVersion": "2019.3.13f1" 16 | } -------------------------------------------------------------------------------- /docs/Build/public.wasm.code.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/public.wasm.code.unityweb -------------------------------------------------------------------------------- /docs/Build/public.wasm.framework.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/Build/public.wasm.framework.unityweb -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Unity WebGL Player | Match 3 8 | 9 | 10 | 19 | 20 | 21 |
22 |
23 | Click to Load! 24 |
25 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/previews/blender.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/blender.gif -------------------------------------------------------------------------------- /docs/previews/blender.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/blender.png -------------------------------------------------------------------------------- /docs/previews/combo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/combo.gif -------------------------------------------------------------------------------- /docs/previews/hinting.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/hinting.gif -------------------------------------------------------------------------------- /docs/previews/intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/intro.gif -------------------------------------------------------------------------------- /docs/previews/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegyoho/match-3-unity/ea4f20f3fcd1208a625508bcebacf5d905dfa839/docs/previews/logo.png -------------------------------------------------------------------------------- /docs/scripts.js: -------------------------------------------------------------------------------- 1 | // Set height of body to match the inner height of window 2 | function setInnerHeight() { 3 | let vh = (window.innerHeight) * 0.01; 4 | document.documentElement.style.setProperty('--vh', `${vh}px`); 5 | } 6 | 7 | const screen = document.querySelector('#unityContainer'); 8 | const footer = document.querySelector('footer'); 9 | 10 | // Calculate the canvas size 11 | function resizeCanvas() { 12 | 13 | const width = Number(screen.style.width.replace('px', '')); 14 | const height = Number(screen.style.height.replace('px', '')); 15 | const aspectRatio = height / width; 16 | screen.style.width = screen.style.height = '0px'; 17 | setInnerHeight(); 18 | 19 | let minDimensionScreen = Math.min(window.innerWidth, window.innerHeight); 20 | 21 | if(minDimensionScreen === window.innerHeight) { 22 | minDimensionScreen *= .875; 23 | 24 | screen.style.width = `${ minDimensionScreen / aspectRatio }px`; 25 | screen.style.height = `${ minDimensionScreen }px`; 26 | } else { 27 | screen.style.width = `${ window.innerWidth }px`; 28 | screen.style.height = `${ window.innerHeight }px`; 29 | } 30 | } 31 | 32 | resizeCanvas() 33 | 34 | window.addEventListener('resize', () => setTimeout(resizeCanvas, 1)) 35 | -------------------------------------------------------------------------------- /docs/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --primary-text-color: #4cff2c; 3 | } 4 | 5 | * { 6 | margin: 0; 7 | padding: 0; 8 | box-sizing: border-box; 9 | } 10 | 11 | html { 12 | font-size: 62.5%; 13 | } 14 | 15 | html, body { 16 | min-height: 100vh; 17 | min-height: calc(var(--vh, 1vh) * 100); 18 | } 19 | 20 | body { 21 | background-color: black; 22 | 23 | font-family: 'Fira Code', monospace; 24 | font-size: 1.6rem; 25 | color: var(--primary-text-color); 26 | 27 | display: flex; 28 | flex-direction: column; 29 | 30 | align-items: center; 31 | justify-content: center; 32 | 33 | overflow: hidden; 34 | } 35 | 36 | body > * { 37 | margin-top: auto; 38 | } 39 | 40 | #unityContainer { 41 | position: relative; 42 | } 43 | 44 | #unityContainer canvas { 45 | display: block; 46 | border: 2px solid var(--primary-text-color); 47 | } 48 | 49 | #load { 50 | position: absolute; 51 | font-size: 2em; 52 | } 53 | 54 | /* === FOOTER === */ 55 | 56 | footer { 57 | padding: 1.6rem 0; 58 | 59 | font-size: 1.4rem; 60 | text-align: center; 61 | } 62 | 63 | footer #social { 64 | margin: 0 auto; 65 | margin-top: 1.6rem; 66 | display: flex; 67 | justify-content: center; 68 | } 69 | 70 | footer #social a + a { 71 | margin-left: 3.2rem; 72 | } 73 | 74 | footer #social svg { 75 | width: 1.6rem; 76 | 77 | fill: var(--primary-text-color); 78 | opacity: 0.5; 79 | 80 | transition: opacity 200ms; 81 | } 82 | 83 | footer #social svg:hover { 84 | opacity: 1; 85 | } 86 | 87 | @media (max-width: 340px) { 88 | html { 89 | font-size: 55%; 90 | } 91 | } --------------------------------------------------------------------------------