UnityUnityメモ

【Unity】ステージを開放したい

Unity

はじめに

こんにちは!Unityでゲームを作っている皆さん、今日は「クリアしたステージ後に次のステージを解放し、ステージセレクトで選べるようにする方法」について簡単に説明します。

ボタンの作成

まず全てのステージに移動できるボタンを用意します。

これが解放後のボタンです。作成したらinspector画面のチェックを外して非表示にしておきます。

次に解放前のボタンを用意します。

解放後のボタンを全てコピーするとすぐに作成できます。

解放前のボタンは半透明にしてみました。

解放前のボタンの機能は使用しないので消去しておきます。

解放後のボタンをステージクリア時にSetActive(true)にして解放後のボタンを表示していきます。

スクリプト

public class StageSelect : MonoBehaviour
{
    public int Save_num; // スコア変数
    public GameObject[] stageSelect =default;

    void Start()
    {
        //現在のstage_numを呼び出す
        Save_num = PlayerPrefs.GetInt("SCORE", 0);

        for (int loop = 0; loop < stageSelect.Length; loop++) 
        {
            if(loop < Save_num) 
            {
                stageSelect[loop].SetActive(true);
            }
            else 
            {
                stageSelect[loop].SetActive(false);
            }
        }
    }
}

スクリプトを作成して空のオブジェクトに貼り付けます。

inspector画面から解放後のボタンを全てセットします。

変数Save_numの値によってステージが開放されていきます。

例えばSave_numが2だった場合Element1(stage3)までが解放されます。

ステージクリア時にSCOREを設定してPlayerPrefsの機能を使ってセーブしておきます。

次のような関数を実行するとステージを解放できます。

public void StageClear()
        {
        //PlayerPrefsのSCOREに3という値を入れる
            PlayerPrefs.SetInt ("SCORE", 2);
            //PlayerPrefsをセーブする         
            PlayerPrefs.Save ();
        }

まとめ

これで、ステージをクリアするたびに次のステージが解放され、ステージセレクト画面から選ぶことができるようになります。この記事を参考にして、自分のゲームでこの機能を試してみてくださいね!

【Unity】セーブ機能の作り方【PlayerPrefsの使い方】