некорректный вывод количества очков по завершении игры Unity
Столкнулся с проблемой конечного вывода очков. Основная проблема что по завершении уровня показывается панель в отображением очков набранных пользователем, в ней не учитываются очки с последнего хода, а так же которые были набраны после (игра по типу 3 в ряд, после последнего хода могут сгенерироваться объекты которые совпадут в одном ряду и уничтожатся. Очки приплюсуются, но в конечном меню эти очки не прибавятся как и с последнего хода).
Проблема наглядно - тык
using UnityEngine;
using UnityEngine.UI;
//using System.Threading;
public class UI : MonoBehaviour
{
public static UI instance;
public Text textScore, textMoves;
private int score = 0;
private int moves = 10;
public GameObject panelGameOver;
public Text gTextScore, gTextBestScore;
private void Awake()
{
instance = this;
}
public void Score(int value)
{
score += value;
textScore.text = "Score: " + score.ToString();
}
public void Moves(int value)
{
moves -= value;
if (moves <= 0)
{
GameOver();
}
textMoves.text = "Moves: " + moves.ToString();
}
private void GameOver()
{
if (score > PlayerPrefs.GetInt("Score"))
{
PlayerPrefs.SetInt("Score", score);
gTextBestScore.text = "New Best: " + score.ToString();
}
else
{
gTextBestScore.text = "New Best: " + PlayerPrefs.GetInt("Score");
}
// Thread.Sleep(1000);
gTextScore.text = "Score: " + score.ToString();
panelGameOver.SetActive(true);
}
}
Ответы (1 шт):
В Вашем случае проверка на GameOver должна происходить не когда ходы закончились а когда понятно что на игровом поле больше ничего не случится и там уже проверять количество оставшихся ходов и вызывать GameOver.