2016-08-25 7 views
1

Я делаю игру VR, в которой есть только один уровень, который находится на главной сцене, а другая сцена имеет «конец», на котором игра «Сверху по тексту» видна с помощью перезапуска (которая перезагружает основную сцену) и кнопку выхода.Сброс счет в перезапуске игры

Моя проблема в том, M, используя этот скрипт как мой ScoreManager Script ниже: Я хочу, чтобы этот счет в конечной сцене тоже, и это работает, как м с помощью PlayerPrefs

Но главная проблема в том, при нажатии на перезапуск в конечная сцена, игра перезагружает основную сцену, но тот счет. Все еще имеют одинаковую ценность предыдущей игры. Я хочу, чтобы он был установлен на ноль. Пожалуйста помоги !!!!

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

namespace CompleteProject 
{ 
    public class ScoreManager : MonoBehaviour 
    { 
     public static int score ;  // The player's score. 
     Text text;      // Reference to the Text component. 

     void Awake() 
     { 
      // Set up the reference. 
      text = GetComponent<Text>(); 
      score = 0; 
      score = PlayerPrefs.GetInt("Score"); 
     } 

     void Update() 
     { 

      // Set the displayed text to be the word "Score" followed by the score value. 
      text.text = "Score: " + score; 
      PlayerPrefs.SetInt("Score", score); 

     } 
    } 
} 

Я также использовал государственный статический силу DeleteKey (INT балл), чтобы удалить счет, но ничего не произошло :(

+0

Зачем использовать 'PlayerPrefs', если вы хотите, чтобы оценка была сброшена на следующем уровне? – Programmer

ответ

0

Вы сказали, что вы пытались DeleteKey(int score), но это не сработало. Ваш код делает не имеют функцию DeleteKey. Если вы не знаете, как использовать эту функцию, приведенный ниже код покажет вам, как ее использовать. Если вы действительно знаете, как ее использовать, но она не работает, как указано в вашем вопросе, тогда позвоните PlayerPrefs.Save() После этого следует удалить ключ и немедленно его обновить.

Чтобы сбросить счет после каждой игры, поместите код в функцию OnDisable().

void OnDisable() 
{ 
    PlayerPrefs.DeleteKey("Score"); 
    PlayerPrefs.Save(); 
} 

Чтобы сбросить его, когда начинается игра, получить текущую score, как вы делали в функции Awake() затем изменить функцию выше для OnEnable().

+0

спасибо за ваш ценный ответ, у меня есть две сцены здесь, одна из них - основная сцена, а одна - конечная сцена, когда я играю в игру. Я на главной сцене оцениваю, правильно обновляю и показываю счет всякий раз, когда я убивал врага, но когда здоровье игрока достигает нуля сцена получает lodes, он также отображает счет любого игрока, который зарабатывает счет на главной сцене, но когда пользователь/игрок перезапускает игру, предыдущий балл также отображается на главной сцене, это проблема, когда игрок перезапускает главную сцену игры, собирает предыдущую игру и добавьте его в основную таблицу оценки сцены, –

+0

Я сделал то, что когда-либо говорил, это делает значение оценки конца сцены «0», и еще одна вещь, я использую тот же сценарий для сцены, спасибо, что помог мне –

 Смежные вопросы

  • Нет связанных вопросов^_^