unity2Dでゲームを作成しています。
全2ステージのゲームです。
ステージごとのスコアを登録し、スコアシーンでスコアをハイスコア順で
上位の10個を表示させてスクロールできるようにし、
ステージ1とステージ2のスコアをわけたいと考えているのですが、
スコアシーンでの表示がうまく行きません。スコアシーンはスコアシーン1とスコアシーン2に分けております。
ステージ1だけの場合は表示がうまく行ったのですが、ステージ1のデータを複製をしてステージ2のスコアデータを作成をした際にできませんでした。
Listで管理をしており
、スコアの登録まではうまく行っていると思うのですが、スコアシーンでの表示がされない状態になっております。
どなたかアドバイスいただけますと幸いです。
ゲーム終了時のスコアの保存(ステージ1とステージ2)
(ゲームの終了の際にスコア保存をして更新をしております。)
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.SceneManagement; 6using System; 7 8public class EndSceneManager : MonoBehaviour 9{ 10List<int> highScores = new List<int>(); 11 //第二ステージの場合 12 List<int> highScores2 = new List<int>(); 13 14 15 [SerializeField] 16 Text scoreText, clearText; 17 string[] keyList = new string[10]; 18 19 string[] keyList2 = new string[10]; 20 21 int scoreNumber; 22 int scoreNumber2; 23 24 25//スコアの保存 26public void Return() 27 { 28//ステージ1の場合 29 if (PlayerPrefs.GetInt("secondLap", 0) == 0) 30 { 31 // playerprefsからscoreNumberの分(1~10)だけハイスコアを取ってくる 32 for (int i = 0; i < PlayerPrefs.GetInt("scoreNumber"); i++) 33 { 34 highScores.Add(PlayerPrefs.GetInt(keyList[i])); 35 // Debug.Log("high score add from pref cycle"); 36 } 37 // 今回のスコアをハイスコアに追加する 38 // if finishFlag == true 39 highScores.Add(GameManager.score); 40 // ハイスコアをソート 41 // highScores.Sort((int x, int y) => { return y - x; }); 42 highScores.Sort((x, y) => y - x); 43 44 if (highScores.Count > 10) 45 { 46 highScores.RemoveAt(10); 47 // Debug.Log("memorized score is more than 10"); 48 } 49 // スコアの数を0にリセット 50 scoreNumber = 0; 51 // ハイスコアをplayerprefsに記録 52 // ハイスコアの個数分scoreNumberをインクリメント 53 for (int i = 0; i < highScores.Count; i++) 54 { 55 // Debug.Log(highScores[i]); 56 PlayerPrefs.SetInt(keyList[i], highScores[i]); 57 scoreNumber++; 58 // Debug.Log("set prefs high score cycle"); 59 } 60 // ハイスコアの個数をplayerprefsに記録 61 PlayerPrefs.SetInt("scoreNumber", scoreNumber); 62 SceneManager.LoadScene("MainScene"); 63 64 } 65 66 67//ステージ2の場合 68 else if (PlayerPrefs.GetInt("secondLap", 0) == 1) { 69 70 // playerprefsからscoreNumberの分(1~10)だけハイスコアを取ってくる 71 for (int i = 0; i < PlayerPrefs.GetInt("scoreNumber2"); i++) 72 { 73 highScores2.Add(PlayerPrefs.GetInt(keyList2[i])); 74 // Debug.Log("high score add from pref cycle"); 75 } 76 // 今回のスコアをハイスコアに追加する 77 // if finishFlag == true 78 highScores2.Add(GameManager.score); 79 // ハイスコアをソート 80 // highScores.Sort((int x, int y) => { return y - x; }); 81 highScores2.Sort((x, y) => y - x); 82 83 if (highScores2.Count > 10) 84 { 85 highScores2.RemoveAt(10); 86 // Debug.Log("memorized score is more than 10"); 87 } 88 // スコアの数を0にリセット 89 scoreNumber2 = 0; 90 // ハイスコアをplayerprefsに記録 91 // ハイスコアの個数分scoreNumberをインクリメント 92 for (int i = 0; i < highScores2.Count; i++) 93 { 94 // Debug.Log(highScores[i]); 95 PlayerPrefs.SetInt(keyList2[i], highScores2[i]); 96 scoreNumber2++; 97 // Debug.Log("set prefs high score cycle"); 98 } 99 // ハイスコアの個数をplayerprefsに記録 100 PlayerPrefs.SetInt("scoreNumber2", scoreNumber2); 101 SceneManager.LoadScene("MainScene"); 102 103 104 105 } 106 }
あなたの回答
tips
プレビュー