2016-08-25 16 views
1

Ich mache ein VR-Spiel, in dem es nur eine Ebene ist in der Hauptszene und die andere Szene ist von "Ende", auf dem das Spiel Über Text Score ist mit Neustart (die lädt die Hauptszene neu) und Exit Button.Zurücksetzen der Punktzahl im Neustart des Spiels

Mein Problem ist, M dieses Skript als mein ScoreManager Script unten angegebenen: ich diese Partitur in Endszene will auch, und dies ist als m Arbeits PlayerPrefs

Aber das Hauptproblem ist, verwendet wird, wenn der Neustart klicken auf In der Endszene lädt das Spiel die Main-Szene neu, aber dieses Ergebnis hat immer noch denselben Wert wie das vorherige Spiel. Ich möchte es auf Null setzen. Bitte helfen Sie !!!!

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

     } 
    } 
} 

Ich habe auch public static void DeleteKey (int score) löschen die Partitur, aber es ist nichts passiert :(

+0

Warum 'PlayerPrefs' verwenden, wenn der Spielstand in der nächsten Ebene zurückgesetzt werden soll? – Programmer

Antwort

0

Sie sagten, Sie versucht DeleteKey(int score) aber es hat nicht funktioniert. Ihr Code tut nicht verwendet haben Sie die DeleteKey Funktion überall.Wenn Sie nicht wissen, wie Sie diese Funktion verwenden, zeigt der Code unten, wie Sie es verwenden.Wenn Sie tatsächlich wissen, wie man es benutzt, aber es funktioniert nicht wie in Ihrer Frage erwähnt, dann rufen Sie an PlayerPrefs.Save() nach dem. Dies sollte den Schlüssel löschen und sofort aktualisieren.

Um die Punktzahl nach jedem Spiel zurückzusetzen, setzen Sie den Code in die Funktion OnDisable().

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

es zurücksetzen, wenn das Spiel beginnt, die aktuellen score wie Sie in der Awake() Funktion haben dann oben auf OnEnable() die Funktion ändern.

+0

danke für Ihre wertvolle Antwort, ich habe zwei Szene hier, eine ist Hauptszene und man ist Endszene, wenn ich Spiel bin in der Hauptszene Punkt ist richtig zu aktualisieren und zeigt Punktzahl, wenn ich Feind getötet, aber wenn Spieler Gesundheit Null Ende bekommen scene get lodes zeigt auch die Punktzahl an, die Spieler in der Hauptszene erzielt, aber wenn Benutzer/Spieler das Spiel neu startet, wird die vorherige Punktzahl auch in der Hauptszene angezeigt. Das ist das Problem, wenn der Spieler das Spiel neu startet und addiere es in Hauptszene Anzeigetafel, –

+0

ich tat, was auch immer du sagst, es macht Endszene Kerbewert "0" und eine andere Sache benutze ich das gleiche Skript für die Szene, danke, mir zu helfen –

Verwandte Themen