質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1536閲覧

ステージごとのスコアの保存

hikaaaaaaaa

総合スコア19

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/05/11 03:22

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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/05/12 00:19

Debug.Logの結果はどうなっていますか?(ここまで動いているがここが動いていないと明示してください)
mattrick

2020/05/15 08:10

ステージ2のスコアはステージ1のものを手動で複製して作ったのですよね? だとしたら、スコアの保存方法を記載しても意味がないです。 スコアの複製方法に間違いがあるのか、それともスコア表示のコードに問題があるのか、判断できません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問