
リトライボタンを押してもシーンをロードできない。
どうしたら解決できるの?

そんなお悩みにお答えします!
Unityでゲーム制作をしていると、「リトライボタンを押してゲームを再開したい」という場面があります。
でもなぜかシーンをロードできないことがあります。
原因としてシーン名が間違っているときなどにエラーが起きがちです。
そんな時は、シーン名を取得してロードする方法が便利です。
本記事では、現在のシーン名を取得し、そのシーンをロードする方法をご紹介します。
環境
Unity バージョン:6000.2.11f1
Windows11
シーンをロードする一般的な方法
以下が一般的に使われているコードです。
SceneManager.LoadScene("SceneName")
実装はとても簡単ですが、プロジェクトのシーン名を変更したり、上記コードの”SceneName”を間違えるとうまくロードできません。
現在のシーン名を取得してロードする方法
現在アクティブになっているシーンの名前を取得したい場合は、次のコードを使います。
SceneManager.GetActiveScene().name
これで簡単に、今プレイしているシーンの名前を取得できます。
リトライボタンで現在のシーンをロードする方法
Unityでは 「SceneManager.LoadScene()」 を使うことで、指定したシーンをロードできます。
その際、現在のシーン名をそのまま渡してしまえばリトライできます。
具体例は以下のとおりです。
using UnityEngine;
using UnityEngine.SceneManagement;
public class RetryManager : MonoBehaviour
{
public void Retry()
{
string currentScene = SceneManager.GetActiveScene().name;
SceneManager.LoadScene(currentScene);
}
}
これで、現在のシーン名を取得してロードが可能です。
次に、Unityエディターで設定していきましょう。
手順は以下のとおりです。
- RetryManager.cs を作成し、ゲームオブジェクトにアタッチする
- ヒエラルキーから Button を選択し、OnClick() の設定を開く
- 「+」ボタンでイベントを追加
- RetryManager をアタッチしたオブジェクトをドラッグして登録
- 関数一覧から
RetryManager → Retry()を選択 - メニュー「Build Profiles」→「Scene List」に該当のシーンを追加する
これで、ボタンをクリックするとリトライできるようになります。
【Unity】現在開いているシーン名を取得してロードする方法 まとめ

本記事では、現在のシーン名を取得し、そのシーンをロードする方法をご紹介しました。
Unityでシーンをロードする時は、「SceneManager.LoadScene(“SceneName”)」のコードを利用するのが簡単です。
ただ、シーンの名前が間違っていたりするとうまくロードできません。
そんな時は、「SceneManager.GetActiveScene().name」でシーン名を取得してロードすると便利です。
本記事が、皆さんの参考になれば幸いです。
