Jump to content
Unity Insider Forum

Score in Player.Prefs speichern (Szenenübergreifend)


uumli

Recommended Posts

Hallo Leute, ich habe ein kleines Score-Script. Mit diesem werden Punkte gesammelt, die später bei einem Händler eingelöst werden können. Diese Punkte müssen allerdings Scenenübergreifend sein, da eine Runde bei mir in mehrere Scenen aufgeteilt sind.

Ich kenne mich nicht so gut mit den Player.Prefs aus, vieleicht könnt ihr mir helfen?

Ich packe hier einmal das Script hinein:

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

public class ScoreManager : MonoBehaviour {

	public static int score;

	Text text;

	void Start()
	{
		text = GetComponent<Text> ();

		score = 0;
	}
	 
	void Update()
	{
		if (score <0)
			score = 0;
		text.text = "" + score;
	}

	public static void Points (int addPoints)
	{
		score += Points;
	}

	public static void Reset()
	{
		score = 0;
	}
}

Die Variable Score muss nun in die Player.Prefs, damit die Punkte in den nächsten Scenen immernoch vorhanden sind und von dem Scoretext angezeigt werden. Könnt ihr mir dabei helfen? 

Vielen Dank für die nette Unterstützung :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du auch ohne PlayerPrefs auskommst, dann kannst du auch diesen Ansatz hier verwenden. Die Klasse "GameScore" ist "static" und damit scenenübergreifend aktiv:
https://forum.unity-community.de/topic/12865-score-erstellen/#comment-94856

using UnityEngine;
using System.Collections;

static class GameScore
{

    private static int sumScorePoints = 0;

    public static void ClearScore()
    {
        sumScorePoints = 0;
    }

    public static int GetScore()
    {
        return sumScorePoints;
    }

    public static void AddScore(int points)
    {
        sumScorePoints += points;
    }
}

Deine Klasse "ScoreManager" kann diese Klasse dann einfach verwenden.
 

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

public class ScoreManager : MonoBehaviour
{

    Text text;

    void Start()
    {
        text = GetComponent<Text>();
        GameScore.ClearScore();
    }

    void Update()
    {
        text.text = "" + GameScore.GetScore();
    }

    public static void Points(int addPoints)
    {
        GameScore.AddScore(addPoints);

    }

    public static void Reset()
    {
        GameScore.ClearScore();
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...