Jump to content
Unity Insider Forum

Highscore-System mit 2 Spielern und 10 Runden


peachplayer

Recommended Posts

Hallo,

deine Anfrage ist viel zu allgemein und undurchsichtig. Was ist für dich ein Highscore-System? Was soll es können? Wie möchtest du die Daten ablegen? Wann und wielange müssen die Daten abrufbar sein? Lokal oder im Internet? Aus welchen Daten besteht ein Highscore?

 

Helfen tut dir vielleicht das hier: 

 

 

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

Danke für die Antwort. Habe im Internet ein Code-Beispiel gefunden für einen Highscore:

     using UnityEngine;
     using System.Collections;
     
     public class HighScore: MonoBehaviour 
     {
         public bool levelComplete;
         public string highscorePos;
         public int score;
         public int temp;
         
         void Start () 
         {
             score=0;
         }
         
         void OnLevelComplete () 
         {
             levelComplete=true;
             score=10000; //values from your scoring logic
             for(int i=1; i<=5; i++) //for top 5 highscores
             {
                 if(PlayerPrefs.GetInt("highscorePos"+i)<score)     //if cuurent score is in top 5
                 {
                     temp=PlayerPrefs.GetInt("highscorePos"+i);     //store the old highscore in temp varible to shift it down 
                     PlayerPrefs.SetInt("highscorePos"+i,score);     //store the currentscore to highscores
                     if(i<5)                                        //do this for shifting scores down
                     {
                         int j=i+1;
                         PlayerPrefs.SetInt("highscorePos"+j,temp);    
                     }
                 }
             }
         }
         
         void OnGUI() 
         {
             if(levelComplete)
             {
                 for(int i=1; i<=5; i++)
                 {
                     GUI.Box(new Rect(100, 75*i, 150, 50), "Pos "+i+". "+PlayerPrefs.GetInt("highscorePos"+i));
                 }
             }
         }
     }

Wenn ich das Spiel starte kommt bei den "Top 5"-Highscores nur Nullwerte heraus. Woran liegt das wohl?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort. Für die Simulation der Runden verwende ich folgenden Ansatz:

  void Update()
    {
      if (Input.GetMouseButtonDown(0))
        {
            OnLevelComplete();
            counter++;
            if (counter % 2 == 0)
            {
                spieler1 = true;
                if (counter > 0)
                levelComplete = true;
            }
            else
            {
                spieler2 = true;
              
            }

Weiss jemand wie man die Runden sonst simulieren könnte?

Gruss

Peachplayer

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier ein Skript für die Runden:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameController : MonoBehaviour
{

    private bool gameRunning = false;
    private int maxRounds = 10;
    private int currentRound = 1;
    private int maxPlayers = 2;
    private int currentPlayer = 1;
    private int maxBalls = 2;
    private int currentBall = 1;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (!gameRunning)
            {
                StartGame(); // Spiel starten
            }
            else
            {
                NextMove(); // Nächster Spielschritt
            }
        }
    }

    void StartGame()
    {
        print("Spiel neu gestartet!");
        gameRunning = true;
        currentRound = 0;
        currentPlayer = 0;
        currentBall = 0;

        NextRound(); // Runde starten
    }

    void GameFinished()
    {
        print("Spiel beendet!");
        gameRunning = false;
    }

    void NextMove()
    {
        if (currentBall < maxBalls) // Weitere Bälle spielen?
        {
            NextBall(); // Nächster Ball wird gespielt
        }
        else
        {
            if (currentPlayer < maxPlayers) // Nächster Spieler?
            {
                NextPlayer(); // Nächster Spieler kommt dran
            }
            else
            {
                NextRound(); // Nächste Runde starten
            }
        }
    }

    void NextPlayer()
    {
        currentPlayer++;

        print("Aktueller Spieler: " + currentPlayer);

        currentBall = 0;
        NextBall(); // Ball setzen
    }

    void NextRound()
    {
        currentRound++;

        if (currentRound > maxRounds) // Spiel beendet?!
        {
            GameFinished();
            return;
        }
        print("Aktuelle Runde: " + currentRound);

        currentPlayer = 0;
        NextPlayer(); // Spieler setzen
    }

    void NextBall()
    {
        currentBall++;
        print("Aktueller Ball: " + currentBall);
    }


    void OnGUI()
    {
        if (gameRunning)
        {
            GUILayout.Label("Aktuelle Runde: " + currentRound);
            GUILayout.Label("Aktueller Spieler: " + currentPlayer);
            GUILayout.Label("Aktueller Ball: " + currentBall);
        } else
        {
            GUILayout.Label("Spiel starten mit linker Maustaste.");
        }
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...