// Update is called once per frame private void Update() { int trashTotal = _playerDataList.Sum(x => x.trashCount); lightAtmoAnimator.SetBool("bStateHasChanged", false); UpdateCopGauge(); if (data.copGauge >= 100 && !data.gameOver) { data.gameOver = true; lightAtmoAnimator.SetInteger("StateNeighborGauge", 4); lightAtmoAnimator.SetBool("bStateHasChanged", true); _audioSrcs[0].Play(); OnGameOver?.Invoke(); // End game data.timeScale = 0; canvasGameOver.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = "Game Over"; canvasGameOver.SetActive(true); canvasUI.SetActive(false); endScore.text = "Score: " + (int)data.score; return; } // Setting / Unsetting pause ? if (Input.GetButtonDown(InputHelper.GetActionName(1, InputHelper.PAUSE, false)) || Input.GetButtonDown(InputHelper.GetActionName(1, InputHelper.PAUSE, true))) { data.paused = !data.paused; if (data.paused) { canvasGameOver.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = "Paused"; canvasGameOver.SetActive(true); canvasUI.SetActive(false); endScore.text = string.Empty; } else { canvasGameOver.SetActive(false); canvasUI.SetActive(true); } } if (data.paused && data.timeScale > 0) { data.timeScale -= Time.deltaTime; data.timeScale = data.timeScale.Wrap(0, 1); } else if (!data.paused && data.timeScale < 1) { data.timeScale += Time.deltaTime; data.timeScale = data.timeScale.Wrap(0, 1); } if (trashTotal >= data.trashLimit) { trashImage.sprite = trashImages[trashImages.Length - 1]; } else { trashImage.sprite = trashImages[(trashTotal * (trashImages.Length - 1)) / data.trashLimit]; } // Update score data.score += (Time.deltaTime * data.timeScale) * 10; scoreMesh.text = "Score: " + data.score.ToString("000000"); }