- Home /
How to add score after destroying object in unity 2D?
Before this, I have made a scoring section to my program that used Invoke repeating every 1s. Now, I have problem how to make my scoring counter add an additional score when I destroy some objects.
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UIManager : MonoBehaviour
{
public Button[] buttons;
public Button pauseButton;
public Image[] images;
public Text scoreText;
public Text highScoreText;
public Text yourScoreText;
public Text text;
bool gameOver;
int score;
levelscroller level;
CoinMove cm;
void Start()
{
gameOver = false;
score = 0 + cm.plus;
InvokeRepeating("scoreUpdate", 1.0f, 1.0f);
}
void Update()
{
storeHighScore(score);
scoreText.text = "" + score;
yourScoreText.text = "" + score;
highScoreText.text = "" + PlayerPrefs.GetInt("highscore");
}
void scoreUpdate()
{
if (gameOver == false)
{
score += 1;
}
}
void storeHighScore(int newHighscore)
{
int oldHighscore = PlayerPrefs.GetInt("highscore", 0);
if (newHighscore > oldHighscore)
{
PlayerPrefs.SetInt("highscore", newHighscore);
oldHighscore = newHighscore;
PlayerPrefs.Save();
}
}
Another class:
using UnityEngine;
using System.Collections;
public class CoinMove : MonoBehaviour
{
public float Speed;
public int plus = 0;
UIManager ui;
void Start()
{
}
void Update()
{
transform.Translate(new Vector3(0, -1, 0) * Speed * Time.deltaTime);
//if (Input.touchCount > 0 || Input.GetTouch(0).phase == TouchPhase.Began)
//{
// Destroy(transform.gameObject);
//}
}
private void OnMouseDown()
{
Destroy(gameObject);
plus += 10;
}
}
It just make the counter of score totally 0.
Answer by Raimi · Jul 04, 2017 at 01:13 AM
You need to increment score at the point/before the object is destroyed.
Example: If you have a method DestroyEnemy()
public void DestroyEnemy()
{
PlayerManager.instance.score += 1;
Destroy(gameObject);
}
or
public void DestroyEnemy()
{
PlayerManager.instance.score = playTime;
Destroy(gameObject);
}
or
public void DestroyEnemy()
{
PlayerManager.instance.SetScore(10);
//In SetScore, store score in player prefs
Destroy(gameObject);
}
In this example I use a singleton class to manage player data like setting and getting score. Not sure if this helps, but good luck on your project.
Your answer
![](https://koobas.hobune.stream/wayback/20220612114825im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Use Sprites as Score 1 Answer
3 star time base system 0 Answers
InvokeRepeating time doesn't sync within the same update function 2 Answers