エッセイマンガ!オタクビアンカップル同棲日記「よめよめ」

同棲中のレズビアンカップルのゆんとあゆむが、日々の生活の様子をマンガや日記にしてお届けするブログです

Unityの簡易セーブで超簡単にハイスコア機能を作る方法!

Unityの簡易セーブで超簡単にハイスコア機能を作るイメージ

今日はUnityゲーム制作講座、第十四弾です!

今日はセーブを作るんだっけ?今作ってるゲームにはいらなそうだけど(笑)

アクションゲームでもクリア済みのステージを記録しとくとかでセーブ機能は使うのだよ!でも今作ってるのにはステージはないからハイスコア機能で解説するよ!

Unityの簡易セーブでハイスコア機能を作る方法

ハイスコア用SceneとUI作成

まずはハイスコア用のSceneを新規作成し、適当にUIを作成します。

以下のような簡素なもので構いません。

ハイスコア用Sceneのイメージ

 

Sceneによって切り替えをする作りにしたいので、スコアの値を入れるTextのGameObjectの名称は、ゲーム本編の画面でスコアを入れているTextと同じ名前で作成しましょう。

GameObjectの名称

 

詳しい作り方はタイトル画面を作成したときの手順を参考にしてください。

 

ScoreManagerにハイスコア用のコードを追加

Scriptsフォルダに作成してあるScoreManagerを開き、中身を以下の内容に書き換えます。

Scriptを保存したら、ハイスコア用Sceneのスコアの値を入れるGameObjectにドラッグ・アンド・ドロップで貼り付けます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class ScoreManager : MonoBehaviour
{
    private Text scoreText;
    public int score = 0;

    void Start()
    {
        scoreText = GetComponentInChildren<Text>();

        if (SceneManager.GetActiveScene().name == "controll")
        {
            scoreText.text = "0";
        }
        else if (SceneManager.GetActiveScene().name == "Score")
        {
            scoreText.text = PlayerPrefs.GetInt("HIGHSCORE", 0).ToString();
        }
    }

    void Update()
    {
        if (SceneManager.GetActiveScene().name == "controll")
        {
            scoreText.text = score.ToString();

            if (score > PlayerPrefs.GetInt("HIGHSCORE", 0))
            {
                PlayerPrefs.SetInt("HIGHSCORE", score);
            }
            
        }
    }
}

 

動作確認を行う

これでハイスコアが記録されるようになっているはずなので、想定通りの動作になっているかを確認しましょう。

イメージどおりに動いてくれていれば完了です。

 

細かい解説は動画の方で行っていますので、合わせて見てもらえたらなと思います。

 

ここまでやったことだけでも、普通にゲーム作れちゃいそうだね!

簡単な3Dアクションなら普通に作れると思うよー。あとは公開の方法を解説して初心者向け講座はおしまいかな。