UnityUnityメモ

Unityで簡単!リトライボタンを作成してゲームを再スタートする方法

Unity

1. はじめに

ゲームを作るとき、プレイヤーがリトライできる機能はとても便利ですよね。特に、アクションゲームやパズルゲームでは、失敗した後にすぐに再挑戦できることで、プレイ体験がより楽しくなります。

Unityでは、簡単なスクリプトとUIボタンを組み合わせるだけで、この「リトライ機能」を実現できます。今回のチュートリアルでは、リトライボタンを作成して、現在のシーンを再ロードする方法を初心者にも分かりやすく解説していきます。

Unityを触ったことがないという方はコチラの記事から見てみてください!

1. シーン再ロードの仕組み

Unityでは、シーンの管理や遷移を行うためにSceneManagerというクラスが用意されています。このクラスを利用すると、現在のシーンを再ロードして、ゲームを最初の状態に戻すことができます。



1. リトライボタンを作成する

ボタンを追加

  1. ヒエラルキーウィンドウでキャンバスを右クリックします。
  2. メニューから「UI」→「Button(Legacy)」を選択します。これでキャンバス(Canvas)とボタンが自動的に作成されます。

ボタンのテキストを変更

  1. ヒエラルキーウィンドウで新しく作成したボタンの子オブジェクト「Text」を選択します。
  2. インスペクターウィンドウでテキストを「リトライ」に変更します。
  3. この記事では、わかりやすいようにその他のオブジェクト(プレイヤーなど)を配置していますが、これらは任意で配置してください。



2. スクリプトを作成する

ステップ1: 新しいC#スクリプトを作成

  1. プロジェクトウィンドウで右クリックします。
  2. 「Create」>「C# Script」を選択して、新しいスクリプトを作成します。名前は「RetryButton」とします。

ステップ2: スクリプトにコードを追加

  1. 「RetryButton」スクリプトをダブルクリックして開き、以下のコードを追加します。
using UnityEngine;
using UnityEngine.SceneManagement;

public class RetryButton : MonoBehaviour
{
    // この関数がボタンをクリックしたときに呼ばれます
    public void RetryGame()
    {
        // 現在のシーンを再ロードします
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }
}

ステップ3: スクリプトをボタンにアタッチする

  1. ヒエラルキーウィンドウで「Retry」ボタンを選択します。
  2. インスペクターウィンドウで「Add Component」ボタンをクリックします。
  3. 「RetryButton」と検索して、追加します。



4. ボタンのクリックイベントを設定する

  1. ヒエラルキーウィンドウで「Retry」ボタンを選択します。
  2. インスペクターウィンドウの「Button (Script)」コンポーネントにある「On Click ()」セクションまでスクロールします。
  3. 「+」ボタンをクリックして新しいイベントを追加します。
  4. ヒエラルキーから「Retry」ボタンをドラッグして、イベントのオブジェクトフィールドにドロップします。
  5. ドロップダウンメニューから「RetryButton > RetryGame()」を選択します。



テストプレイ

作成したリトライボタンが正しく動作するかを確認する手順を説明します。以下の手順で動作をテストしましょう。


1. プレイモードを開始

  1. Unityエディターの上部にある「Play」ボタン(▶)をクリックしてプレイモードを開始します。
  2. シーンが開始され、ゲームが動作していることを確認します。

2. リトライボタンをクリック

  1. 作成したUIのリトライボタンが画面に表示されていることを確認します。
  2. リトライボタンをクリックします。

これで、プレイヤーがリトライボタンをクリックすると、現在のシーンが再ロードされ、ゲームがリスタートします。試してみてください!



よくある質問

Q
SceneManagerが使えません。どうすればいいですか?
A

スクリプトの冒頭にusing UnityEngine.SceneManagement;を追加してください。

Q
他のシーンをロードしたい場合はどうしますか?
A

SceneManager.GetActiveScene().nameの代わりに、特定のシーン名をSceneManager.LoadScene("シーン名")で指定してください。

Q
リトライボタンが動作しません。どうしたらよいですか?
A

ボタンの「OnClick()」イベント設定が正しいか、アタッチしたオブジェクトと関数を再確認してください。