using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Text;
using TMPro;
using System.Linq;
[System.Serializable]
public class SaveData
{
public List<string> playerNameData = new List<string>();
public List<float> timeData = new List<float>();
public Dictionary<float, string> rankingData = new Dictionary<float, string>();
public string playerName;
public float time;
}
public class SaveSystem : MonoBehaviour
{
string path;
SaveData saveData = new SaveData();
void Start()
{
path = Path.Combine(Application.dataPath, "KiwiRanking.json");
JsonLoad();
}
public void JsonLoad()
{
if (!File.Exists(path))
{
GameManager.instance.time = 0.1f;
GameManager.instance.playerName = "YongGyu Im";
GameManager.instance.rankingData = saveData.rankingData;
JsonSave();
}
else
{
string loadJson = File.ReadAllText(path);
saveData = JsonUtility.FromJson<SaveData>(loadJson);
if (saveData != null) //Load
{
for (int i = 0; i < saveData.playerNameData.Count; i++)
{
GameManager.instance.playerNameData.Add(saveData.playerNameData[i]);
}
for (int i = 0; i < saveData.playerNameData.Count; i++)
{
GameManager.instance.timeData.Add(saveData.timeData[i]);
}
for (int i = 0; i < saveData.playerNameData.Count; i++)
{
GameManager.instance.rankingData.Add(saveData.timeData[i], saveData.playerNameData[i]);
}
}
}
}
public void JsonSave()
{
saveData.playerName = GameManager.instance.playerName;
saveData.time = GameManager.instance.time;
saveData.playerNameData.Add(saveData.playerName);
saveData.timeData.Add(saveData.time);
saveData.rankingData.Add(saveData.time, saveData.playerName);
GameManager.instance.playerNameData.Add(saveData.playerName);
GameManager.instance.timeData.Add(saveData.time);
GameManager.instance.rankingData.Add(saveData.time, saveData.playerName);
string json = JsonUtility.ToJson(saveData, true);
File.WriteAllText(path, json);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using System.Linq;
using System.Threading.Tasks;
public class SaveDataList : MonoBehaviour
{
public void DataListLoad()
{
if (GameManager.instance.playerNameData.Count == 0)
{
Debug.Log("데이터 없음");
return;
}
var queryAsc = GameManager.instance.rankingData.OrderBy(x => x.Key);
int i = 0;
foreach (KeyValuePair<float, string> pair in queryAsc)
{
transform.GetChild(i).GetChild(0).GetComponent<TextMeshProUGUI>().text = pair.Value +" (" + pair.Key.ToString() + ")";
//pair.Value[i] + "\n" + pair.Key.ToString()[i].ToString();
i++;
if(i==8)
{
break;
}
}
/*
for (int i = 0; i < GameManager.instance.playerNameData.Count; i++)
{
transform.GetChild(i).GetChild(0).GetComponent<TextMeshProUGUI>().text = GameManager.instance.playerNameData[i] + "\n" + GameManager.instance.timeData[i].ToString();
}
*/
}
}