【Unity講座_8時限目】ボタンクリック時の動作を実装しよう

Unity講座

今回はスクリプトを使って、ボタンオブジェクトがクリックされた時の機能実装について説明します。具体的には「戻る」ボタンが押された時にホーム画面へ移動する機能を実装します。

遷移先シーン作成とシーン登録

STEP1:遷移先Sceneの作成

先ずは「戻る」ボタンがクリックされた時の移動先となるシーンを作成します。

細かい手順については下記「Unity基礎3」にて説明しているため省略しますので、必要に応じてご参照ください。
【Unity基礎3】画面遷移機能をボタンに実装する
今回はUnityでボタンが押された時に、別の画面を遷移(移動)する機能の実装について説明します。

それではシーンの作成を行っていきましょう。「戻る」ボタンが押された時にはホーム画面に戻るものとします。そこで新規にSceneを作成し、下図のように、HomeSceneとします。

次に、移動機能をテストした際に分かりやすくなるよう、HomeSceneには下図のようにテキストで画面中央付近にホーム画面と表示させました。

STEP2:シーンの登録

次にシーンの登録を行います。Fileタブ→BuildSettingsから下図のように、ScenesInBuildにGuildSceneとHomeSceneを登録しました。

こちらについても細かい手順や登録理由については下記「Unity基礎3」にて説明していますので、必要に応じてご参照ください。
【Unity基礎3】画面遷移機能をボタンに実装する
今回はUnityでボタンが押された時に、別の画面を遷移(移動)する機能の実装について説明します。

スクリプトの作成とロード機能の実装

STEP1:スクリプト保管用フォルダの作成

先ずは今後も複数のスクリプトを作成することを考慮して、スクリプト専用のフォルダを作成しします。今回は下図のように、Assetsフォルダの直下にScriptsフォルダを作成し、さらにその直下にギルド画面のスクリプトをまとめるGuildSceneというフォルダを作成しました。

STEP2:スクリプトの作成

スクリプト保管用のフォルダが作成できたら、次はスクリプトを作成します。今回はギルド画面にあるボタンクリック時機能を表すスクリプトという意味で、ButtonControllerGuildSceneという名前のスクリプトを作成することとします。(下図参照)

スクリプトの名前は皆さんのお好みで結構ですが、他のシーンでも似たような機能を実装する際、全く同じ名前のスクリプトは作成できません。そのため私は、おおよそですがスクリプト名は「機能を表す名前+シーン名という形にする」という自分なりのルールを決めています。

STEP3:ロード機能の実装

続いて作成したスクリプトにロード機能を実装します。具体的には先程作成したスクリプトButtonControllerGuildSceneを開き、下記のようにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//シーンをロードするために導入
public class ButtonControllerGuildScene : MonoBehaviour
{
    //「戻る」ボタンがクリックされた時の処理
    public void ClickReturnButton()
    {
        //HomeSceneへ移動
        SceneManager.LoadScene("HomeScene");
    }
}
大まかに上記スクリプトの説明をすると下記の通りです。
4行目:画面遷移を実施する、LoadSceneを使用するために記述します。
8行目:ボタンを押した時に呼び出されるようにするメソッドです。
ボタンオブジェクトという、クラスの外部からこの関数を呼び出すため、publicにしています。
11行目:SceneManager.LoadScene(“A”)は決まり文句です。Aの中には呼び出したいシーンの名前を記述します。

スクリプトをアタッチするオブジェクトの作成

ここまででボタンに付与したい機能は実装できたので、次はそのスクリプトをアタッチするオブジェクトを作成します。今回はGuildSceneのヒエラルキーウィンドウでCreateEmptyで空のオブジェクトを作成し、名前をButtonControllerとします。(下図参照)

スクリプトをアタッチする対象はもともと画面にあるButtonオブジェクト等でも問題はありません。ただし、今回はボタンが複数あり、どのオブジェクトにスクリプトをアタッチしたのか分かりづらくなるのを避ける目的で、Buttonオブジェクトとは別に専用のオブジェクトを用意しました。

スクリプトのオブジェクトへのアタッチ

続いて作成したオブジェクトにスクリプトをアタッチします。方法は下図のように、ヒエラルキーウィンドウでButtonControllerオブジェクトを選択した状態で、スクリプトをドラッグし、インスペクターウィンドウにドロップします。

上記方法以外にもスクリプトをアタッチする方法はあります。下記「Unity基礎3」でもその方法の一つを説明していますので、必要に応じてご参照ください。
【Unity基礎3】画面遷移機能をボタンに実装する
今回はUnityでボタンが押された時に、別の画面を遷移(移動)する機能の実装について説明します。

ボタンクリック時の機能とロード機能の紐付け

スクリプトのアタッチまでできたので、次は「戻る」ボタンクリック時の機能とスクリプトに記述された関数ClickReturnButtonとの紐付けを行います。これにより『「戻る」ボタンがクリックされる→ClickReturnButtonが呼び出される』という形となり、目標としている機能が実現できます。

STEP1:OnClick()へのButtonControllerオブジェクトの紐付け

先ずはReturnButtonオブジェクトのOnClick()と、スクリプトがアタッチされたButtonControllerオブジェクトを紐付けます。

具体的には下図に示すように、ReturnButtonのインスペクターウィンドウからOnClick()の+ボタンをクリックし、指定のボックスにButtonControllerオブジェクトをドラッグ&ドロップします。

STEP2:OnClick()とClickReturnButtonメソッド(ロード機能)の紐付け

OnClick()にButtonControllerオブジェクトを認識させたので、続いてButtonControllerオブジェクトにアタッチされたClickReturnButtonメソッドとOnClick()を紐づけます。方法としては下図に示す通りです。

これで「戻る」ボタンがクリックされた時、ClickReturnButtonメソッドが呼び出されるようになりました。

機能テスト

最後に機能テストをしてみて下さい。ギルド画面の「戻る」ボタンが押された時に、下図のようにホーム画面へ移動したら成功です。

今回はスクリプトを使用した機能の実装を行いましたが、いかがだったでしょうか。慣れないうちは大変かもしれませんが、スクリプトの作成に慣れてくると戦闘画面など色々なことができるようになりますので頑張ってみて下さい。

ではまた次回お会いしましょう。皆さんお疲れ様でした。

以上。

-ゲームアプリ「HelloAnotherWorld」ダウンロードのお願い-

私が作成したゲームアプリ「HellowAnotherWorld」をダウンロードしていただけると嬉しいです。
有料ではありますが、ペットボトル飲料一本分程度の値段ですので、是非お願いします。
皆様にもメリットがあり、「このサイトで勉強すればこの程度のアプリであれば自分一人で作成できるようになる」という一つの目安にもなるかと思います。

-ゲームアプリ「HelloAnotherWorld」ダウンロードのお願い-

私が作成したゲームアプリ「HellowAnotherWorld」をダウンロードしていただけると嬉しいです。
有料ではありますが、ペットボトル飲料一本分程度の値段ですので、是非お願いします。
皆様にもメリットがあり、「このサイトで勉強すればこの程度のアプリであれば自分一人で作成できるようになる」という一つの目安にもなるかと思います。

スポンサーリンク
HelloAnotherWorld
HelloAnotherWorld
¥120
posted withアプリーチ
Unity講座
ソフィーのUnity講座

コメント