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

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

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

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

Unity

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

Q&A

解決済

1回答

9836閲覧

リザルト画面で合計スコアを表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity

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

1グッド

0クリップ

投稿2018/12/21 15:29

編集2018/12/21 15:31

ゲーム終了→リザルト画面へ→スコアとハイスコア、合計スコアを表示、という順番でゲームを動かしているのですが、合計スコアのみが毎回0点になったり、特定の点数で固定されたりと挙動がおかしいです。全く理由がわからなかったので質問させていただきます。

スコアの管理

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.SceneManagement; 6 7public class Result : MonoBehaviour { 8 int Resultscore; //スコア用変数 9 public Text scoreText; //スコアを表示するText 10 public Text highScoreText; //ハイスコアを表示するText 11 int highScore; //ハイスコア用変数 12 13 public Text totalScoreText; //合計スコアを表示するText 14 int totalScore; //合計スコア用変数 15 16 public void result() { 17 StartCoroutine("GameOver"); 18 } 19 20 IEnumerator GameOver() { 21 Resultscore = Player.GetScore(); 22 totalScore = totalScore + Resultscore; 23 24 PlayerPrefs.SetInt("TOTAL", totalScore); 25 PlayerPrefs.Save (); 26 27 scoreText.text = Resultscore.ToString (); 28 highScore = PlayerPrefs.GetInt("HIGH", 0); 29 totalScore = PlayerPrefs.GetInt("TOTAL", 0); 30 // 保存しておいたハイスコアと合計スコアをキーで呼び出し取得し保存されていなければ0になる 31 highScoreText.text = highScore.ToString(); 32 totalScoreText.text = totalScore.ToString(); 33 34 if (Resultscore > highScore) { 35 36 highScore = Resultscore; 37 //ハイスコア更新 38 39 PlayerPrefs.SetInt("HIGH", highScore); 40 PlayerPrefs.Save (); 41 //ハイスコアを保存 42 43 highScoreText.text = highScore.ToString(); 44 //ハイスコアを表示 45 } 46 } 47}
bochan2👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

保存済みの合計スコアを取得するよりも先に合計スコアを計算・保存してしまっているためではないでしょうか?
下記のように、保存済みの値の取得を先にもってくると変化はあるでしょうか。

C#

1using System.Collections; 2using UnityEngine; 3using UnityEngine.UI; 4 5public class Result : MonoBehaviour 6{ 7 public Text scoreText; //スコアを表示するText 8 public Text highScoreText; //ハイスコアを表示するText 9 public Text totalScoreText; //合計スコアを表示するText 10 11 private int Resultscore; //スコア用変数 12 private int highScore; //ハイスコア用変数 13 private int totalScore; //合計スコア用変数 14 15 public void result() 16 { 17 StartCoroutine("GameOver"); 18 } 19 20 private IEnumerator GameOver() 21 { 22 yield return null; 23 // yieldがなかったため、とりあえず追加しています 24 25 Resultscore = Player.GetScore(); 26 highScore = PlayerPrefs.GetInt("HIGH", 0); 27 totalScore = PlayerPrefs.GetInt("TOTAL", 0); 28 Debug.LogFormat("Resultscore:{0}", Resultscore); 29 Debug.LogFormat("Previous highScore:{0}", highScore); 30 Debug.LogFormat("Previous totalScore:{0}", totalScore); 31 // PlayerPrefsに保存されている値をまず取得する 32 // 念のためどのような値が取得されたかコンソールに出力 33 34 if (Resultscore > highScore) 35 { 36 highScore = Resultscore; 37 PlayerPrefs.SetInt("HIGH", highScore); 38 Debug.LogFormat("New highScore:{0}", highScore); 39 } 40 // HIGHを更新 41 42 totalScore = totalScore + Resultscore; 43 PlayerPrefs.SetInt("TOTAL", totalScore); 44 Debug.LogFormat("New totalScore:{0}", totalScore); 45 // TOTALを更新 46 47 PlayerPrefs.Save(); 48 // PlayerPrefsを保存 49 50 scoreText.text = Resultscore.ToString(); 51 highScoreText.text = highScore.ToString(); 52 totalScoreText.text = totalScore.ToString(); 53 // スコアを表示 54 } 55}

投稿2018/12/21 22:51

Bongo

総合スコア10807

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

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

退会済みユーザー

退会済みユーザー

2018/12/22 01:34

上記のように、保存済みの値の取得を先にもってきたところ、無事合計スコアの保存・取得ができました。 分かりやすい丁寧な回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問