- 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
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