public void AddScore(Data.ScoreData data) { Data.ScoreData min = null; if (Ranking?.ScoreList == null) { Ranking = new Data.RankingData(); Ranking.ScoreList = new List <Data.ScoreData>(); for (int i = 0; i < RankingNum; ++i) { Ranking.ScoreList.Add(new Data.ScoreData()); } } for (int i = 0; i < Ranking.ScoreList.Count; ++i) { if (min == null || min.Score > Ranking.ScoreList[i].Score) { min = Ranking.ScoreList[i]; } Ranking.ScoreList[i].IsNew = false; } if (data.Score >= min.Score) { data.IsNew = true; Ranking.ScoreList.Remove(min); Ranking.ScoreList.Add(data); Ranking.ScoreList.Sort((a, b) => b.Score - a.Score); } SaveScore(); }
private void Update() { switch (State) { case GameState.Game: { _Time -= Time.deltaTime; // Debug.Log(_Time); if (_Time <= 0) { //! スコアを取得 var score = 0; // typeで指定した型の全てのオブジェクトを配列で取得し,その要素数分繰り返す. foreach (GameObject obj in UnityEngine.Object.FindObjectsOfType(typeof(GameObject))) { // シーン上に存在するオブジェクトならば処理. if (obj.activeInHierarchy) { var score10 = obj.GetComponent <Score10>(); if (score10 != null) { score = Score10.Score; } } } var data = new Data.ScoreData(); data.Score = score; data.IsNew = true; ScoreManager.Instance.AddScore(data); //! ゲーム終了 State = GameState.End; // SceneMoveManager.Instance.SetNextScene(SceneMoveManager.SceneType.Result); } } break; case GameState.End: { // State = GameState.None; } break; case GameState.Start: { //! カウントダウンしたい State = GameState.Game; } break; } }
public void LoadScore() { string json = PlayerPrefs.GetString(_RankingTag); Ranking = JsonUtility.FromJson <Data.RankingData>(json); //! 足りない分足す while (Ranking.ScoreList.Count < RankingNum) { var data = new Data.ScoreData(); Ranking.ScoreList.Add(data); } Ranking.ScoreList.Sort((a, b) => b.Score - a.Score); }