シーンを再ロードしても、変数がずっと保持されるように、スクリプトを作成しましょう。
今回は、ハイスコアがずっと表示される仕組みをつくります。

Sphereをクリックするたびに点数が入り、最高点になれば、ハイスコアが更新。
もう一度ゲームプレイしても、ハイスコアはリセットされずに、新記録がずっと保持されます。

関連記事:
ハイスコアをリセットする
ベストタイムを表示する
Prefabに触れると得点が入る
タイマーによる成績で評価ランク
TextMeshProを使用したタイムアップのしくみ
点数によるABC評価ランク
PlayerPrefsを使ってセーブする
Sphereをいくつか複製して、まばらに配置します。

空のオブジェクトを作成します。

ScoreCount.csを作成し、GameObjectに追加します。

ScoreCount.csを記述します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScoreCount : MonoBehaviour {     public int score;     public int highScore;     void Start()     {         score = 0;         highScore = PlayerPrefs.GetInt("SCORE", 0);     } void Update()     {           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);             RaycastHit hit;             if (Input.GetMouseButtonDown(0))             {                 if (Physics.Raycast(ray, out hit))                 {                     Destroy(hit.collider.gameObject);                     score++;                 }             }         if(highScore < score )             {                 highScore = score;                 PlayerPrefs.SetInt("SCORE", highScore);                 PlayerPrefs.Save();             }         Debug.Log(highScore);     } } | 
ゲームプレイして、Sphereを3個クリックしてみましょう。
いったん、プレイを終了します。

もう一度プレイしてみましょう。
ハイスコアとして、コンソールに3が表示されています。
Sphereを3個以上クリックすれば、ハイスコアに新記録が更新されます。


PlayerPrefsによって、セーブとロードの機能を実装できます。
PlayerPrefs.GetInt(第一引数, 第二引数)
第一引数にはキーを登録します。
ここではSCOREという登録キーでロードしますが、第二引数に何も保存されていないときは、0を返すようにします。
そして、ScoreがhighScoreを上回れば、Scoreの数値をセットします。
PlayerPrefs.SetInt(第一引数, 第二引数)
SCOREキーに、highScoreの値を保存。
最後に PlayerPrefs.Save()を書き、変更された値をディスクへと保存します。
関連記事:
ハイスコアをリセットする
ベストタイムを表示する
Prefabに触れると得点が入る
タイマーによる成績で評価ランク
TextMeshProを使用したタイムアップのしくみ
点数によるABC評価ランク
 
	   
         
         
           
         
           
        