Unityで2Dアクションゲームを作ろう⑥ ~ハイスコア機能の実装~
Unityを使用した2Dアクションを作成する際に使用した方法やロジックなどを紹介していきます。
※注意 Unity4の頃に作ったものなので、いろいろと古いです。
[Unity_317×90]
ハイスコア機能の実装
前回は以下の内容で進めてきました。
Unityで2Dアクションゲームを作ろう⑤ ~障害物の自動生成~
今回は、ハイスコア機能を実装してみたいと思います。
第2回で作成したスコアスクリプトにロジックを追加する形です。
ハイスコアは通常のスコア表示と違い、ゲームシーンを読み込み直しても値がリセットされないようにする必要があります。
そのため、PlayerPrefsという機能を使用するとデータベースなどに接続しなくてもデータをローカルのプロジェクト内に
保存することができます。
オンラインでハイスコアランキングを作成したい場合はこちら
Unity側の設定
ハイスコア機能をもつスコアスクリプト
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】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発



