【Unity】ボタンをクリックすると関数が実行される

Unityでボタンをクリックしたときに処理を行いたいときってありますよね。

この記事ではボタンをクリックしたときに関数を実行させる方法を紹介します。

目次

主な実装方法は2つ

実装方法は2つあります。

  1. Unityのエディタ画面から設定する方法
  2. コードを書いて実装する方法

それぞれ順に説明していきます。

Unityのエディタ画面から設定する方法

SuikaGameというタイトル画面でPlayボタンを押すと、別のシーンに遷移する処理を実装したいとします。

シーン遷移に関する関数を記述します。関数はpublicにします

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneTransition : MonoBehaviour
{
   public void LoadMainGameScene()
    {
        SceneManager.LoadScene("SuikaGame");
    }
}

Playボタンが押されるとLoadMainGameScene関数が実行してほしいです。

こちらのスクリプトをButtonにアタッチします。

次にButtonコンポーネントのOnClickという項目の+をクリックします。

すると、Runtime Only Noneという項目が出てくるので、こちらにスクリプトがアタッチされている

オブジェクトをドラッグ&ドロップします。

今回はPlayButtonをNoneの箇所にドラッグ&ドロップします。

次にNoFuctionをクリックします。

すると、選択肢がいろいろ出てくるので、アタッチしたスクリプトの項目をクリックします。

今回はSceneTransitionをクリックします。

こちらをクリックすると、また選択肢が出てくるので、自分の実行させたい関数を

選択すれば完了です。

シーンを再生してみます。

ボタンをクリックすると別の画面に遷移しました。

コードを書いて実装する方法

ここからはコードを書いて実装する方法を紹介していきます。

ButtonコンポーネントのOnClickは何も設定していない状態です。

では下記にコードを記述します。

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;               // ★追加 

public class SceneTransition : MonoBehaviour
{
    // ★ここから追加
    public Button LoadButton;      

    void Start()
    {
        // ボタンにクリックイベントを追加
        LoadButton.onClick.AddListener(LoadMainGameScene);
    }

     // ★ここまで追加

     public void LoadMainGameScene()
     {
        SceneManager.LoadScene("SuikaGame");
     }
}
コードの解説

1⃣Buttonを変数で扱いたいので先頭にusing UnityEngine.UIを記述し、publicで変数を定義します。

2⃣Start関数でonClick.AddListenerを記述します。

onClickAddListenerは

Button.onClick.AddListener(実行したい関数);

のように()の中に自分が実行させたい関数を記述します。

以上がコードの説明になります。

こちらで保存してスクリプトに実行させたいボタンをアタッチします。

今回はPlayButtonオブジェクトにSceneTransitionスクリプトがアタッチされているので、

PlayButtonオブジェクトをクリックし、こちらのButtonの箇所にPlayButtonオブジェクトをアタッチします。

こちらで完了です。

シーンを再生してみます。

コードを書いて実装できました。

まとめ

いかかだったでしょうか。

今回はボタンをクリックをクリックすると関数が実行される方法をご紹介しました。

エディタで設定する方法は視覚的に実装できますが、オブジェクトの数が増えてくると

ボタンを探して設定するのが大変かもしれません。

ある程度慣れたら、コードで記述する方がいいかもしれませんね。

ではでは!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

電気制御設計→ITエンジニア
前職は電気系のエンジニアで物流倉庫などの設備を動かしていました。
現在はITエンジニアとして開発に従事。
業務では主にUnity、C#、.NETを利用。
現在、UnityとC#を用いて業務用スマホアプリを開発中。

コメント

コメントする

目次