【Unity】ButtonのOnClickってなに?

Home

こんにちは、むたこなです。

Unityの勉強を始めると必ずと言っていいほど登場するのが、
ButtonのOnClickではないでしょうか?

しかし、初心者にとってはそもそも、

  • ButtonのOnClickってなに?
  • どうやって使うの?
  • どういう仕組みなの?

といった疑問を持つのではないでしょうか?

本ブログではこのような疑問にお答えします。
超基本だからこそ押さえておきたいButtonのOnClickをぜひ習得してください!

スポンサーリンク
スポンサーリンク

ButtonのOnClickってなに?

ButtonのOnClickとはButtonがクリックされたときに実行されるUnityEventです。

UnityEventとは複数の関数を順次実行するクラスです。
UnityActionというデリゲートを複数保持し、Invoke()を実行することで実行されます。
もし、言葉の意味がよくわからなければ「C# デリゲート」で検索してみましょう!

要約すると、ボタンが押されたときに実行する処理を登録できる場所ということになります。

どうやって使うの?

ButtonのOnClickはクリック時に実行したい関数を登録して使用します。
登録方法は2種類の使い方があります。

Inspectorからアタッチする

一番簡単な方法です。
手順は以下の通りです。

1. スクリプトを用意する

ボタンを押した際に実行したい処理が書かれたスクリプトを用意します。
今回はデバックログに「Clicked!」と表示されるような関数OnClickを用意しました。

なお、関数のアクセス修飾子publicにしてください。

public class SampleClass : MonoBehaviour
{
    public void OnClick()
    {
        Debug.Log("Clicked!");
    }
}

2. 任意のGameObjectにアタッチする

任意のGameObjectにアタッチします。
Inspectorから登録する場合は、
登録したい処理が書かれたスクリプトがGameObjectにアタッチされている必要があります。

3. OnClickにInspectorから登録する

対象のButtonのInspectorを開き、OnClickのボタンを押して項目を増やします。

None(object)と書かれた欄に先ほど作成したスクリプトがアタッチされたGameObjetをアタッチします。

No Functionと書かれたドロップダウンから、
先ほど作成したクラス名→実行したい関数名
を順にクリックします。

登録した関数名が出てこない場合は、関数のアクセス修飾子がpublicになっているか確認してください。

作成したクラス名が出てこない場合は、GameObjectにスクリプトがアタッチされているか、2. 任意のGameObjectにアタッチするでアタッチしたGameObjectが正しいか確認してください。

これで登録作業は完了です!

スクリプトから登録する

ButtonのOnClickはスクリプトから関数を登録することも可能です。

1. Buttonを参照する

何らかの方法で対象のButtonを参照してください。

GetComponentを使った方法や、SerializeFieldしてInspectorからアタッチするなど
どのような方法でも構いません。

2. AddListenerをする

OnClickのクラスであるUnityEventにはAddListenterという関数が用意されており、
これを使って処理を登録します。

以上で登録作業は完了です!

以下にサンプルコードを置いておきます。

using UnityEngine;
using UnityEngine.UI;

public class SampleClass : MonoBehaviour
{
    [SerializeField] Button button;

    private void Start()
    {
        button.onClick.AddListener(OnClick);
    }

    private void OnClick()
    {
        Debug.Log("Clicked!");
    }
}

どういう仕組みなの?

この章はC#をもっと知りたい方向けの内容ですので、
興味がない方は読み飛ばしてOKです!

冒頭のButtonのOnClickってなに?でほとんど説明してしまいましたが、
OnClickの正体はUnityEventです。

UnityEventは複数のデリゲートを保持し、
任意のタイミングでそれらを実行することができるクラスです。
実行される順番は登録された順となります。

余談ですが、OnClickのようにあるイベントが発生した際に実行される事を、
プログラムの世界ではコールバックと呼びます。
(言語によって様々な呼び方があります。)

特にUIなどユーザーから特定の操作が行われた際に処理を行う状況でよく利用されます。

その他、コールバックついてもっと詳しく知りたい方は、
以下のキーワードを使って検索してみてください。
勉強のお役に立つと思います。

デリゲート / イベント / オブザーバー / System.Action  

まとめ

ButtonのOnClickについて解説しました。

Unityを使う以上避けて通れない機能だと思いますので、
ぜひ本記事を活用してマスターしてみてください!

皆さんの努力のサポート

この記事を書いた筆者はUnityの初心者向けレッスンを行っております。

  • 一人だと理解できない
  • モチベーションが続かない
  • スクールだと値段が高すぎる

このような悩みを持った方がいらっしゃればサポートしたいと思っております。
ご興味あれば覗いてみてください。

【Unity】初めてのゲーム制作サポートします。【プログラマ】【未経験OK】|あなただけのパーソナルメンターを(MENTA)
プラン概要Unityを使ってゲームを作れるまでサポートいたします。まったくの未経験の方でも、ある程度やってきた方でもOKです!優しく丁寧に受け答えしますので、よろしくおねがいします!!メンター情報現役....

スポンサーリンク
スポンサーリンク
HomeUnity
むたこなをフォローする
むたこなブログ

コメント

タイトルとURLをコピーしました