Остановить счет, когда игра окончена, и сохранить значение

Для моей новой игры в Unity3D я создал код Javascript, который позволяет подсчитывать, когда игрок играет, и отображать значение в GUIText.

Но у меня есть некоторые проблемы.

В игре начинается отсчет, и GUIText показывает значение счетчика. Но когда я подхожу к концу игры, счет не останавливается.

В сцене выхода GUIText, который показывает значение счетчика игровой сцены, перезапускается с 0 и не останавливается.

Вот сценарий:

var Counter : int = 0;
var score : GUIText;

function Start () {

}

function Update () {

  Counter++;
  score.text = Counter.ToString();

}

Итак, что я хочу сделать, это остановить подсчет, когда игра закончится, и сохранить значение, чтобы в следующей сцене GUIText показывал окончательное значение.

Как я могу это сделать?


person Ophélia    schedule 18.02.2016    source источник
comment
Я сделал вам unity3d 2 года назад, не могу вспомнить методы. поддерживать какую-то логическую переменную, чтобы отслеживать статус игры и показывать счет только тогда, когда эта переменная имеет значение true. Поэтому, когда вы закончите игру, статус переменной изменится на false, поэтому табло никогда не появится. т.е. if(!gameover){//show score} в вашем методе onGUI   -  person Pragnani    schedule 18.02.2016
comment
где я разместил эту строку кода?   -  person Ophélia    schedule 18.02.2016
comment
Я думаю, есть функция под названием onGuI, где вы будете показывать свой счет. там вам нужно показывать счет только тогда, когда игра не окончена .. поделитесь своим кодом, чтобы я мог вам помочь   -  person Pragnani    schedule 18.02.2016
comment
@Ophélia, НЕ ИСПОЛЬЗУЙТЕ устаревшую систему графического интерфейса. Это не работает. Вы полностью тратите свое время. Хорошей новостью является то, что использовать обычную систему пользовательского интерфейса очень просто. (1) нажмите «Добавить холст пользовательского интерфейса» (2) нажмите «Добавить текст пользовательского интерфейса». все готово. Вы можете найти миллион туториалов и т. д. это ОЧЕНЬ легко   -  person Fattie    schedule 18.02.2016
comment
Возможный дубликат Изменить текст кнопки пользовательского интерфейса Unity 4.6   -  person Fattie    schedule 18.02.2016
comment
вы можете найти любое количество руководств, например stackoverflow.com/a/34744087/294884 unity3d.com/learn/tutorials/topics/user-interface-ui   -  person Fattie    schedule 18.02.2016
comment
я сделал это все готово, но я пытаюсь остановить счет и отобразить значение в другом GUIText   -  person Ophélia    schedule 18.02.2016
comment
Я рекомендую вам проверить состояние игры, чтобы начать подсчет, сохраняя две переменные (IsStartGame, ISFinishGame).   -  person Edanur Akbas    schedule 08.01.2021


Ответы (2)


Попробуй это:

private var isFinished : boolean = false;

var Counter : int = 0;
var score : GUIText;

function Start () {

}

function Update () {

  if(!isFinished){
      Counter++;
      score.text = Counter.ToString();
  }

  if ("something that makes the game stop") {
       isFinished = true;
  }
}

Затем, чтобы передать переменную в следующую сцену, вы можете использовать PlayerPrefs для сохранения вашей переменной, а затем получить ее в следующей сцене, посмотрите здесь и здесь

person Tom    schedule 18.02.2016
comment
эй спасибо за ответ. Я не понимаю, когда счетчик останавливается в скрипте? (у меня ошибка BCE0043, неожиданный токен: bool) - person Ophélia; 18.02.2016
comment
@Ophélia В ответе, похоже, была синтаксическая ошибка, вместо переменной UnityScript использовался C #. Отредактировал ответ, чтобы исправить это. - person Serlite; 18.02.2016
comment
@Serlite Извините за это, я пишу код на C #, так что это получилось само собой! Теперь код должен работать! - person Tom; 19.02.2016
comment
большое спасибо! но я могу использовать PlayerPrefs? чтобы сохранить значение и показать его в другой сцене. - person Ophélia; 19.02.2016
comment
да, я сделаю это, но предыдущий скрипт не работает... у меня все та же проблема, и я не знаю, как ее решить. - person Ophélia; 20.02.2016

Вам нужно ограничить приращение счетчика, используя переменное состояние в событии Game Over. (Я не знаю, как ты заканчиваешь свою игру)

    var Counter : int = 0;
    var score : GUIText;
    var isGameOver = false; //true this variable as your gameover
    function Start () {

    }

    function Update () {
    //isGameOver variable to check that  the game is over or not
    if(!isGameOver){
      Counter++;
      score.text = Counter.ToString();
    }

    }
person Muhammad Faizan Khan    schedule 21.11.2016