Unity3D: save scores into file example

Trabla: Unity3D: save scores into file example

Solving:

This example class loads scores from text file
First line of text file - current score user last have
Second line of text file - best score.

Example usage:
ResultsManager.Load(); // load data from file if exists,
// if not init with default values

int curretnScore = ResultsManager.GetCurrentScore();
int bestScore = ResultsManager.GetBestScore();

//Set score - if score is higher than best score - best score will be updated
ResultsManager.SetScore( 100 );
ResultsManager.Save(); // saving data to file


Example content of my-app_scores.txt:
15
210





using UnityEngine;
using System.Collections;
using System.IO;


public class ResultsManager {
   
    static string filePath = Application.persistentDataPath + "/my-app_scores.txt";


    static int currentScore     = 0;
    static int bestScore         = 0;


    public static void LoadScores (){
        // Load scores from file
        // First line - current score
        // Second  - best score

        if (File.Exists (ResultsManager.filePath)) {
            string[] scores = File.ReadAllLines ( ResultsManager.filePath );
            if( scores.Length == 2 ){
                //1. Current Score
                ResultsManager.currentScore = int.Parse(scores[0]);
                //2. Best Score
                ResultsManager.bestScore = int.Parse(scores[1]);

            }
        }
    }

    public static int GetCurrentScore(){
        return ResultsManager.currentScore;
    }

    public static int GetBestScore(){
        return ResultsManager.bestScore;
    }

    public static void SetScore( int newScore ){
   
        if( newScore > ResultsManager.bestScore ){
            ResultsManager.bestScore = newScore;
        }

        ResultsManager.currentScore = newScore;
    }

    public static void SaveScores(){
        // Saves currentScore and best Score
        // into file
        // first line - current score int
        // second line - best score


        string[] scores = new string[2];
        //1. Current Score
        scores[0] = ResultsManager.currentScore.ToString();
        //2. Best Score
        scores[1] = ResultsManager.bestScore.ToString();

        File.WriteAllLines( ResultsManager.filePath, scores );
    }


}

No comments:

Post a Comment