はじめに
こんにちは!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 ();
}
まとめ
これで、ステージをクリアするたびに次のステージが解放され、ステージセレクト画面から選ぶことができるようになります。この記事を参考にして、自分のゲームでこの機能を試してみてくださいね!