キューバに行ってみたい

ゲーム開発とかWeb開発とか

[Unity] ボタンで Scene 変更を行える汎用的な script を作成する

Version unity 2020.3.27.f1 で動作検証を行っています。

カジュアルゲームなどでステージクリア後にボタンが表示されて次のステージに遷移するというような実装を行いたいことがあるかと思います。

毎回次のステージの Scene を指定してロードする為の script を用意するのは面倒なので、今回は汎用的な script を実装していきます。

実装方法

今回はサンプルの実装ということで、まず次のステージへのボタンを配置した Scene を準備して以下のような script を Button にアタッチします。

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

public class TransitionManager : MonoBehaviour
{
    [SerializeField] private string _loadScene;
    public void OnClick()
    {
        SceneManager.LoadScene(_loadScene);
    }
}

そして Button にアタッチした script の OnClick メソッドを event として登録しておきます。

また script の変数である _loadScene には次の Scene の Scene名を設定します。

全体としてはこんな感じです。

このように script の変数に次の Scene名を設定できるようにすることでステージごとに script を作成せずに1つの script を汎用的に使いまわすことができます。

また、検証していませんが Scene名を規則的にする、例えば Stage1Scene, Stage2Scene とすることで script で現在の Scene を取得してから正規表現で抜いて次の Scene を設定することでそもそも変数に設定すること自体不要にすることができそうです。