From b4e7f7080cfff8e11a7964e9df370f56b7e77a62 Mon Sep 17 00:00:00 2001 From: Gregory Campbell Date: Mon, 8 Jun 2020 23:18:18 -0400 Subject: [PATCH] Added a score and score title that display at the end of the game and fixed a few UI bugs that resulted from the game over status or restarting --- Assets/Scenes/Main Scene.unity | 174 +++++++++++++++++++++++++++++++-- Assets/Scripts/GameScript.cs | 21 +++- Assets/Textures/Score.png | Bin 0 -> 2952 bytes Assets/Textures/Score.png.meta | 92 +++++++++++++++++ Assets/Textures/Score.xcf | Bin 0 -> 18207 bytes Assets/Textures/Score.xcf.meta | 7 ++ 6 files changed, 284 insertions(+), 10 deletions(-) create mode 100644 Assets/Textures/Score.png create mode 100644 Assets/Textures/Score.png.meta create mode 100644 Assets/Textures/Score.xcf create mode 100644 Assets/Textures/Score.xcf.meta diff --git a/Assets/Scenes/Main Scene.unity b/Assets/Scenes/Main Scene.unity index 8c7cad7..2d4ddd1 100644 --- a/Assets/Scenes/Main Scene.unity +++ b/Assets/Scenes/Main Scene.unity @@ -200,7 +200,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &519420028 GameObject: @@ -283,7 +283,88 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &610814838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 610814840} + - component: {fileID: 610814839} + m_Layer: 0 + m_Name: ScoreTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!212 &610814839 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610814838} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: -125711741 + m_SortingLayer: 2 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: dd10188e951816c49a522652187e56cc, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.12, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &610814840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610814838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &838031008 GameObject: @@ -508,7 +589,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1664203755 GameObject: @@ -542,7 +623,9 @@ MonoBehaviour: Object: {fileID: 317481903} Dirt: {fileID: 5810670192936853663, guid: 6c319566e78e59d4b848e83cbf6cb8c5, type: 3} Restart: {fileID: 2120053446} + ScoreTitle: {fileID: 610814838} Countdown: {fileID: 838031010} + Score: {fileID: 1804874296} ObjectSprites: - {fileID: 21300000, guid: f86f46202b4377743b719984d5bb8396, type: 3} - {fileID: 21300000, guid: bf9a4d7870709424d95eaad944a6363b, type: 3} @@ -563,7 +646,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1739945069 GameObject: @@ -646,7 +729,7 @@ Transform: m_LocalScale: {x: 0.5, y: 0.5, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!60 &1739945072 PolygonCollider2D: @@ -849,6 +932,7 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - {fileID: 838031009} + - {fileID: 1804874295} m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -857,6 +941,84 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1 &1804874294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1804874295} + - component: {fileID: 1804874297} + - component: {fileID: 1804874296} + m_Layer: 5 + m_Name: ScoreText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1804874295 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804874294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1769056510} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 300, y: 150} + m_SizeDelta: {x: 400, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1804874296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804874294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: a32081f970984024b87f4cac03c0c93f, type: 2} + m_FontSize: 0 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!222 &1804874297 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804874294} + m_CullTransparentMesh: 0 --- !u!1 &1885377150 GameObject: m_ObjectHideFlags: 0 @@ -938,7 +1100,7 @@ Transform: m_LocalScale: {x: 0.5, y: 0.5, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!60 &1885377153 PolygonCollider2D: diff --git a/Assets/Scripts/GameScript.cs b/Assets/Scripts/GameScript.cs index 1a26ede..a70622c 100644 --- a/Assets/Scripts/GameScript.cs +++ b/Assets/Scripts/GameScript.cs @@ -9,7 +9,9 @@ public class GameScript : MonoBehaviour public GameObject Object; public GameObject Dirt; public GameObject Restart; + public GameObject ScoreTitle; public Text Countdown; + public Text Score; public Sprite[] ObjectSprites; private bool clicked = false; @@ -64,9 +66,9 @@ public class GameScript : MonoBehaviour if(pickedUpItem.name == "Rag") { - pickedUpItem.transform.position = new Vector2(7.25f, 2.5f); + pickedUpItem.transform.position = new Vector2(7.25f, 2f); } else if (pickedUpItem.name == "SprayBottle"){ - pickedUpItem.transform.position = new Vector2(7.25f, -2.5f); + pickedUpItem.transform.position = new Vector2(7.25f, -2f); } pickedUpItem.transform.rotation = Quaternion.identity; @@ -109,13 +111,16 @@ public class GameScript : MonoBehaviour if(pickedUpItem != null && pickedUpItem.name == "Rag") { - pickedUpItem.transform.position = new Vector2(7.25f, 2.5f); + pickedUpItem.transform.position = new Vector2(7.25f, 2f); pickedUpItem.transform.rotation = Quaternion.identity; } else if (pickedUpItem != null && pickedUpItem.name == "SprayBottle"){ - pickedUpItem.transform.position = new Vector2(7.25f, -2.5f); + pickedUpItem.transform.position = new Vector2(7.25f, -2f); pickedUpItem.transform.rotation = Quaternion.identity; } + Score.text = objectsPolished.ToString(); + + ScoreTitle.SetActive(true); Object.SetActive(false); //Destorys all dirt and spray gameobjects left over that player didn't clean @@ -134,11 +139,19 @@ public class GameScript : MonoBehaviour //Debug.Log("GameOver"); } + if(gameOver) + { + Countdown.text = "0"; + } + } void Setup() { + Score.text = null; + ScoreTitle.SetActive(false); + Object.transform.localScale = new Vector3(1, 1, 1); Object.GetComponent().sprite = null; Destroy(Object.GetComponent()); diff --git a/Assets/Textures/Score.png b/Assets/Textures/Score.png new file mode 100644 index 0000000000000000000000000000000000000000..353fb5bb17d5e1b774080b70d489c8f2ead0f278 GIT binary patch literal 2952 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 literal 0 HcmV?d00001 diff --git a/Assets/Textures/Score.png.meta b/Assets/Textures/Score.png.meta new file mode 100644 index 0000000..cf16054 --- /dev/null +++ b/Assets/Textures/Score.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: dd10188e951816c49a522652187e56cc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/Score.xcf b/Assets/Textures/Score.xcf new file mode 100644 index 0000000000000000000000000000000000000000..d11e3ca7d4ed2b607e2431d3f5d5716bf78b3030 GIT binary patch literal 18207 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