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

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

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

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

Unity

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

Q&A

解決済

1回答

3704閲覧

ハイスコアを実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity

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

0グッド

0クリップ

投稿2018/07/26 01:24

編集2018/07/26 08:33

[Unity] ハイスコアの実装 & アプリを終了しても記録を残す方法
上記のサイトを参考にハイスコアの機能を作成したのですが、ハイスコアではなく、毎回スコアの点数と同じ記録が表示されてしまいます。
[例]7点を取る→3点を取る,この場合3点の方がハイスコアに入ってしまいます。
ご教授願います。

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5using UnityEngine.UI; 6 7public class CubeController : MonoBehaviour { 8 private Rigidbody2D rb2D; 9 public GameObject Score; 10 public Text RScoreText; 11 public GameObject EndPanel; 12 public ScoreScript scorescript; 13 public GameObject RButton; 14 public Text highScoreText; //ハイスコアを表示するText 15 private int highScore; //ハイスコア用変数 16 private string key = "HIGH SCORE"; //ハイスコアの保存先キー 17 18 private void Start () { 19 RButton.gameObject.SetActive(false); 20 } 21 22 void OnCollisionEnter2D (Collision2D collision) { 23 EndPanel.gameObject.SetActive(true); 24 int Rscore; 25 Rscore = scorescript.score; 26 RScoreText.text = "Score:" + Rscore.ToString(); 27 if (Rscore > highScore) { 28 highScore = Rscore; 29 //ハイスコア更新 30 PlayerPrefs.SetInt(key, highScore); 31 //ハイスコアを保存 32 highScoreText.text = "HighScore:" + highScore.ToString(); 33 //ハイスコアを表示 34 } 35 RButton.gameObject.SetActive(true); 36 } 37 38 void OnTriggerEnter2D (Collider2D col) { 39 //Score(GUIText)のScoreUpメソッドを呼び出す 40 Score.SendMessage ("ScoreUp", 1); 41 Destroy (col.gameObject); 42 } 43}

c#

1using UnityEngine; 2using UnityEngine.UI; 3using System.Collections; 4 5public class ScoreScript : MonoBehaviour { 6 public int score = 0; 7 8 void Start () { 9 GetComponent<Text>().text = score.ToString(); 10 } 11 12 public void ScoreUp (int point) { 13 score += point; 14 GetComponent<Text>().text = score.ToString(); 15 } 16}

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

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

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

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

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

guest

回答1

0

ベストアンサー

PlayerPrefs.Save()がないので、保存されていないのが原因かと思います。

PlayerPrefs.SetInt(key, highScore)の下にPlayerPrefs.Save()を追加してみてください。

投稿2018/07/26 01:41

TomoG12

総合スコア299

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

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

退会済みユーザー

退会済みユーザー

2018/07/26 08:32

"PlayerPrefs.Save();"を追加したのですが、特に変化は起こりませんでした。 もしかしたら、この後に"SceneManager.LoadScene ("戻るシーン");"があるのでそれでハイスコアがリセットされてあるのかも...と思っています。
TomoG12

2018/07/26 10:34

Saveの後にSceneManagerがあるなら問題ないと思います。 シーンを切り替えてからでもいいので、保存されいているのかを確認してみてください。 もし保存できていないようなら保存部分で。 保存できているならhighScoreに設定時にエラーが起こっていると思います。
退会済みユーザー

退会済みユーザー

2018/07/26 12:03

Startメゾットに"highScore = PlayerPrefs.GetInt(key, 0);"と"highScoreText.text = "HighScore:" + highScore.ToString();"を入れ忘れていました。 この2つのコードを書き加えたところ、無事ハイスコアが記載されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問