peachplayer Geschrieben 18. Januar 2018 Melden Share Geschrieben 18. Januar 2018 Hallo Leute Weiss jemand, wie man ein Highscore-System mit 2 Spielern und 10 Runden erstellt für ein Bowling-Spiel? Jeder Spieler soll pro Runde 2 Kugeln werfen können. Danke im voraus! Gruss Peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elharter Geschrieben 19. Januar 2018 Melden Share Geschrieben 19. Januar 2018 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 More sharing options...
peachplayer Geschrieben 22. Januar 2018 Autor Melden Share Geschrieben 22. Januar 2018 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 More sharing options...
Zer0Cool Geschrieben 22. Januar 2018 Melden Share Geschrieben 22. Januar 2018 Weil "PlayerPrefs.GetInt()" 0 liefert wenn zuvor nichts gespeichert wurde. Ich denke du musst "OnLevelComplete ()" aufrufen, dann sollte eigentlich "10000" als Top Score auftauchen: void Start () { score=0; OnLevelComplete(); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 22. Januar 2018 Autor Melden Share Geschrieben 22. Januar 2018 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 More sharing options...
Zer0Cool Geschrieben 22. Januar 2018 Melden Share Geschrieben 22. Januar 2018 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 More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.