- Home /
Save GUI List to my Text File
Hi everybody! I need to store my LeaderBoard data generated in the UI to a text file in my oriject, how can I do that?
My Script LEADERBOARD:
public class HighScoreManager : MonoBehaviour {
private static HighScoreManager m_instance;
private const int LeaderboardLength = 10;
public static HighScoreManager _instance
{
get
{
if (m_instance == null)
{
m_instance = new GameObject("HighScoreManager").AddComponent<HighScoreManager>();
}
return m_instance;
}
}
void Awake()
{
if (m_instance == null)
{
m_instance = this;
}
else if (m_instance != this)
Destroy(gameObject);
DontDestroyOnLoad(gameObject);
}
public void SaveHighScore(string name, float score)
{
List<Scores> HighScores = new List<Scores>();
int i = 1;
while (i <= LeaderboardLength && PlayerPrefs.HasKey("HighScore" + i + "score"))
{
Scores temp = new Scores();
temp.score = PlayerPrefs.GetFloat("HighScore" + i + "score");
temp.name = PlayerPrefs.GetString("HighScore" + i + "name");
HighScores.Add(temp);
i++;
}
if (HighScores.Count == 0)
{
Scores _temp = new Scores();
_temp.name = name;
_temp.score = score;
HighScores.Add(_temp);
}
else
{
for (i = 1; i <= HighScores.Count && i <= LeaderboardLength; i++)
{
if (score < HighScores[i - 1].score)
{
Scores _temp = new Scores();
_temp.name = name;
_temp.score = score;
HighScores.Insert(i - 1, _temp);
break;
}
if (i == HighScores.Count && i < LeaderboardLength)
{
Scores _temp = new Scores();
_temp.name = name;
_temp.score = score;
HighScores.Add(_temp);
break;
}
}
}
i = 1;
while (i <= LeaderboardLength && i <= HighScores.Count)
{
PlayerPrefs.SetString("HighScore" + i + "name", HighScores[i - 1].name);
PlayerPrefs.SetFloat("HighScore" + i + "score", HighScores[i - 1].score);
i++;
}
}
public List<Scores> GetHighScore()
{
List<Scores> HighScores = new List<Scores>();
int i = 1;
while (i <= LeaderboardLength && PlayerPrefs.HasKey("HighScore" + i + "score"))
{
Scores temp = new Scores();
temp.score = PlayerPrefs.GetFloat("HighScore" + i + "score");
temp.name = PlayerPrefs.GetString("HighScore" + i + "name");
HighScores.Add(temp);
i++;
}
return HighScores;
}
public void ClearLeaderBoard()
{
//for(int i=0;i<HighScores.
List<Scores> HighScores = GetHighScore();
for (int i = 1; i <= HighScores.Count; i++)
{
PlayerPrefs.DeleteKey("HighScore" + i + "name");
PlayerPrefs.DeleteKey("HighScore" + i + "score");
}
}
void OnApplicationQuit()
{
PlayerPrefs.Save();
}
}
public class Scores { public float score;
public string name;
}
My Script SAVE/LOADSCORES:
public class LoadScores : MonoBehaviour {
//public Text username;
//public Text time;
List<Scores> highscore;
int someInt = 40;
// Use this for initialization
void Start () {
int i ;
highscore = new List<Scores>();
var fileName = "MyFile.txt";
if (File.Exists(fileName))
{
File.Delete(fileName);
Debug.Log(fileName + " Cancellato.");
}
var sr = File.CreateText(fileName);
sr.WriteLine("Classifica1: ");
sr.WriteLine("I can write ints {0} or floats {1}, and so on.",
1, 4.2);
sr.Write(PlayerPrefs.GetString("Username"));
sr.Close();
}
void OnGUI()
{
GUILayout.Space(20);
if (GUILayout.Button("Clear Leaderboard"))
{
HighScoreManager._instance.ClearLeaderBoard();
}
highscore = HighScoreManager._instance.GetHighScore();
highscore.ToString();
GUILayout.Space(150);
GUILayout.BeginHorizontal();
GUILayout.Label("Name", GUILayout.Width(Screen.width / 2));
GUILayout.Label("Scores", GUILayout.Width(Screen.width / 2));
GUILayout.EndHorizontal();
GUILayout.Space(25);
foreach (Scores _score in highscore)
{
GUILayout.BeginHorizontal();
GUILayout.Label(_score.name, GUILayout.Width(Screen.width / 2));
GUI.skin.label.fontSize = someInt;
GUILayout.Label("" + _score.score, GUILayout.Width(Screen.width / 2));
GUI.skin.label.fontSize = someInt;
GUILayout.EndHorizontal();
}
}
public void Ceck()
{
highscore = HighScoreManager._instance.GetHighScore();
Debug.Log("CDCDCDCDC");
}
// Update is called once per frame
void Update () {
}
}
PLS HEEEEEELP!
Comment