2016-08-25 2 views
1

Je crée un jeu VR, dans lequel il n'y a qu'un seul niveau qui est sur la scène principale et l'autre scène est de "fin" sur laquelle le jeu Over text score est visible avec Restart (qui recharge la scène principale) et le bouton de sortie.Réinitialiser le score au redémarrage du jeu

Mon problème est, M en utilisant ce script comme mon ScoreManager Script donné ci-dessous: Je veux que ce score scène finale aussi, et cela fonctionne comme m en utilisant PlayerPrefs

Mais le principal problème est, en cliquant sur le redémarrage à la scène de fin, le jeu recharge la scène principale mais ce score a toujours la même valeur que le jeu précédent. Je veux que cela se règle sur zéro. S'il vous plaît aider !!!!

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

     } 
    } 
} 

J'ai aussi utilisé DeleteKey public static void (score int) pour supprimer la partition, mais rien ne se passe :(

+0

Pourquoi utiliser 'PlayerPrefs' si vous voulez que le score soit réinitialisé au niveau suivant? – Programmer

Répondre

0

Vous avez dit que vous avez essayé DeleteKey(int score) mais il ne fonctionne pas. Votre code ne pas a la fonction DeleteKey Si vous ne savez pas comment utiliser cette fonction, le code ci-dessous vous montrera comment l'utiliser.Si vous savez comment l'utiliser, mais cela ne fonctionne pas comme mentionné dans votre question, alors appelez PlayerPrefs.Save() après cela.Cela devrait supprimer la clé et la mettre à jour immédiatement

Pour réinitialiser le score après chaque partie, placez le code dans la fonction OnDisable().

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

le remettre à zéro jeu commence, obtenir le score actuel comme vous l'avez fait dans la fonction Awake() puis modifiez la fonction ci-dessus pour OnEnable().

+0

merci pour votre précieuse réponse, j'ai deux scène ici, l'un est la scène principale et l'autre est la scène finale, quand je joue le jeu suis dans la scène principale score est correctement mise à jour et montrant le score chaque fois que je tue l'ennemi scène obtient lodes il affiche également le score quel que soit le joueur gagne score dans la scène principale, mais lorsque l'utilisateur/joueur redémarre le jeu le score précédent est également affiché dans la scène principale, c'est le problème, chaque fois que le joueur reprend la scène et l'ajouter dans le tableau de score de la scène principale, –

+0

J'ai fait ce que vous avez dit, il fait la valeur de la scène de fin "0" et encore une chose que j'utilise le même script pour la scène, merci de m'aider –