ハイスコアを保存してクリア後に表示させる方法【Unity】

スコアを正しく管理できるようになったところで、ハイスコアを保存してゲーム集後にクリア画面で確認できるようにします。

ゲームの仕様にもよりますが、スコアを競うゲームの場合は、ハイスコアが必須ですね。

スポンサーリンク

ハイスコアを保存してクリア画面に表示する

まずは、ハイスコアを表示するためのテキストを作成します。

ハイスコアテキストを追加

クリアパネル上で表示させたいので「scorePanel」を右クリックして「UI」→「Text」を選択。

ハイスコアテキストを配置するイメージ

配置する場所はお好みで。私は画面のやや左上にしてみました。床と他のテキストに被らない場所がオススメですかね。

ディレクタースクリプトの修正(ハイスコアを保存して表示)

続いてスコアを管理するディレクタースクリプトに追加処理を記述していきます。

クリア画面にハイスコアを表示するスクリプト

まずは、ハイスコア用のテキストとスコア変数を宣言しておきます。

スタートメソッド内でハイスコアをhiscore変数で取得。保存されていない場合は0になります。

ゲーム終了後にハイスコアを表示させるので、コルーチンの中に具体的な処理を記述します。

ゲームプレイ中は、パネルが非アクティブ状態ですので、スタートメソッド内で「GameObject.Find」を使おうとすると「NullReferenceException」エラーになります。

ですから、パネルがアクティブになった状態でHiscoreテキストを見つけるようにします。

現スコアがハイスコアより小さい場合は、これまでのハイスコアをそのまま表示。そうじゃない場合は記録更新ですので、hiscoreを書き換えてPlayerPrefs.SetIntで保存して表示します。

スクリプトを保存したらハイスコアの挙動をチェックしてみてください。

ハイスコアが更新される様子

Resultが今回の得点で、上に表示されるスコアがこれまでの最高得点になります。