Game highscore file writing
Hello. I am making a snake game in unity and I am trying to save the user score to a CSV file using C# StreamWritter but my script I have written seems to stop once it reaches the file writing.
Highscore script:
using UnityEngine;
using System.Collections;
using System.IO;
public class Highscore : MonoBehaviour {
public GameObject CO;
public GUInamecarry GNC;
public struct Highscores
{
public string name;
public int score;
public string date;
}
void Awake () {
CO = GameObject.FindWithTag("empty");
GNC = CO.GetComponent<GUInamecarry> ();
}
// Use this for initialization
void Start () {
Highscores[] hs = new Highscores[6];
hs[1].name = GNC.name;
hs[1].score = GNC.score;
hs[1].date = "19/02/16";
string dir = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location); // For when it is installed on a computer. Not when being used in unity.
string filePath = "E:/" + "highscore.csv";
// replace the "E:/" with dir when done
if (!File.Exists (filePath)) { // verifies file is there.
File.Create (filePath).Close ();
}
using (StreamReader reader = new StreamReader (filePath)) {
string line;
int i = 1;
while ((line = reader.ReadLine ()) != null) {
string[] part = line.Split (',');
hs [i + 1].name = part [0];
int x = int.Parse (part [1]);
hs [i + 1].score = x;
hs [i + 1].date = part [2];
i = i + 1;
Debug.Log (hs [i].name);
Debug.Log (hs [i].score);
Debug.Log (hs [i].date);
}
reader.Close();
int c = i - 1;
for (int a = 1; a < c; a++) {
// Starts a second loop to compare the record values of the one record against the other then swaps them.
for (int b = 0; b < c - 1; b++) {
// The if statement checks to see if the points of the driver are less than the points of the next driver in the row of the records along.
if (hs [b].score < hs [b + 1].score) {
// The swap function then swaps all the values one record with another.
int temp = hs [b].score;
hs [b].score = hs [b + 1].score;
hs [b + 1].score = temp;
}
}
}
Debug.Log (hs[1].name);
File.Delete (filePath);
File.Create (filePath).Close ();
**!! I know the script works fine till this point here after the file has been created.
using (StreamWriter outputFile = new StreamWriter(filePath)) {
for (int d = 0; d < c; d++)
{
Debug.Log(d);
outputFile.WriteLine(hs[d].name + ", " + hs[d].score + ", " + hs[d].date);
}
outputFile.Close();
}
}
}
// Update is called once per frame
void Update () {
}
}
Comment
Your answer
Follow this Question
Related Questions
Highscore and PlayerPrefs unity C# 1 Answer
Highscore system unity C# 0 Answers
How do I save my Highest time using playerprefs? 1 Answer
How do I access playerprefs from another script? 1 Answer
How to use SyncListStruct properly? 0 Answers