Beispiel #1
0
        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();
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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);
        }