Unityで2Dアクションゲームを作ろう⑥ ~ハイスコア機能の実装~


Unityで2Dアクションゲームを作ろう⑥ ~ハイスコア機能の実装~

Unityを使用した2Dアクションを作成する際に使用した方法やロジックなどを紹介していきます。

※注意 Unity4の頃に作ったものなので、いろいろと古いです。

ハイスコア機能の実装


前回は以下の内容で進めてきました。
Unityで2Dアクションゲームを作ろう⑤ ~障害物の自動生成~

今回は、ハイスコア機能を実装してみたいと思います。
第2回で作成したスコアスクリプトにロジックを追加する形です。
ハイスコアは通常のスコア表示と違い、ゲームシーンを読み込み直しても値がリセットされないようにする必要があります。
そのため、PlayerPrefsという機能を使用するとデータベースなどに接続しなくてもデータをローカルのプロジェクト内に
保存することができます。

オンラインでハイスコアランキングを作成したい場合はこちら

Unity側の設定


ヒエラルキーの構造
WS000142

ScoreGUIのインスペクター
WS000143

Scoreのインスペクター
WS000146

HighScoreのインスペクター
WS000147

ハイスコア機能をもつスコアスクリプト


Score.cs

using UnityEngine;
using System.Collections;

public class Score : MonoBehaviour {

    public GUIText scoreGUI;
    public GUIText highscoreGUI;
    private int score;
    private int highScore;

    void Start(){
        score = 0;
        // キーを使って値を取得
        // キーがない場合は第二引数の値を取得
        highScore = PlayerPrefs.GetInt("highScoreKey", 0);
    }

    // スコアの加算
    void AddScore(int s){
        score = score + s;
    }

    void Update () {
        // Scoreが現在のハイスコアを上回ったらhighScoreを更新
        if(highScore < score) highScore = score;

        scoreGUI.text = "" + score;
        highscoreGUI.text = "" + highScore;
    }

    public void Save(){
        // メソッドが呼ばれたときのキーと値をセットする
        PlayerPrefs.SetInt("highScoreKey", highScore);
        // キーと値を保存
        PlayerPrefs.Save();
    }

    public void Reset(){
        // キーを全て消す
        PlayerPrefs.DeleteAll();
   }
}

PlayerPrefsは”キー”と”値”をセットで保存します。
上記のスクリプトでは、”highScoreKey”という文字列をキーとして、変数highScoreを保存しています。
int型の値を呼び出す場合はGetInt()、セットする場合はSetInt()でそれぞれ行います。
PlayerPrefs.Save()を実行すると、そのときセットされている値が、キーと一緒に保存されます。
PlayerPrefs.DeleteAll()で保存したデータを初期化できます。

Saveメソッド、Resetメソッドとしてそれぞれ用意しておき、ゲームをコントロールするスクリプトから
GameObject.Find (“ScoreGUI”).SendMessage(“Save”)
という具合に呼び出してあげるとよいでしょう。

まとめ


PlayerPrefsを使用することで、多少のデータであればプロジェクト内に保存することができます。
しかし、プレイしたユーザーごとのハイスコアや、もっと大規模なデータを保存するとなるとこの方法では
効率が悪くなってくるため、データベースなどを使用する方がよいでしょう。
ローカルデータのちょっとした保存で使用するといった感じです。

ハイスコア機能の実装は以上です。
次回は タッチパネル対応編 です。

今月の新着記事

【Unity認定試験対策】業界情報のチャプターで出題される用語の解説
【解けないとマズいレベルの練習問題】C# 練習問題 8
【Unity認定試験対策】Unity 練習問題 11 - Animator -
【Unity認定試験対策】Unity 練習問題 12 - Navmesh -

記事一覧にもどる

  • このエントリーをはてなブックマークに追加

PAGE TOP