【Unity】Button実行時の処理内容をスクリプトから設定する方法

Buttonに複数の引数を設定 Unity
スポンサーリンク

前書き

通常、ボタンが押下された時に処理を実行する場合はインスペクターから設定することが多いのですが、ボタンのイベントはスクリプトからも設定することができます。インスペクターと異なり、スクリプトから設定することで処理の複数起動や複雑な処理も設定できるため、「ボタンを押したときに画面を有効化しつつ、対象の画面をフェードインしてみたい」といったこともできるようになります。今回はボタンのイベントをスクリプトから設定する方法について紹介していこうと思います。

インスペクターからボタンの処理を設定する方法

よく使われる方法として、インスペクターからOnClickに実行したい処理を設定する方法があります。こちらの方法の利点としてはインスペクターを使用することで、簡単にボタンのイベントを設定することができる点です。ただし、複雑なロジックや動的な変更が必要な場合には制約が多く設定できないことが多々あります。

Buttonのインスペクター

スクリプトからボタンのイベントを設定する方法

以下はスクリプトからボタンのイベントを設定する方法になります。処理に「onClick.AddListener」という記述がありますがこれはボタンにイベントを設定する処理となります。また、その後ろの「OnButtonClick」がボタンが押された時に呼び出される関数になります。このスクリプトをボタンに設定してあげることでOnButtonClickの処理が実行されるようになります。

    public Button myButton;

    void Start()
    {
        if (myButton != null)
        {
            myButton.onClick.AddListener(OnButtonClick);
        }
    }

    void OnButtonClick()
    {
        Debug.Log("Button was clicked!");
    }

スクリプトからボタンのイベントを実行してみる

ではさっそく、上記のサンプルを使ってスクリプトからボタンのイベントを実行してみましょう。上記のスクリプトを「ButtonClickExample」として作成し、ボタンに付与した状態で動かしてみました。

OnClickに処理を設定していませんが、ボタンを押下するたびにConsole上に「Button was clicked!」が表示されていることが分かりますね。

スクリプトからボタンのイベントを設定すると引数を複数設定できる

スクリプトからボタンのイベントを設定することの一番の利点としてはスクリプトから設定する場合は引数を複数設定することができる点です。通常、インスペクターからボタンのイベントを設定するときは引数を1つしかできない制約(カスタムクラスなど色々と考えればやろうと思えばできます)があります。ただし、スクリプトからボタンのイベントを設定する場合はその制約がないため、インスペクターから設定するよりもより柔軟にボタンを使えるという点が一番のメリットかなと思います。

今度は引数を2つ追加した「ButtonClickExample2」を作ってみました。引数を設定する方法としてラムダ式で設定することが多いので今回はラムダ式での記載になっています。

    public Button myButton;

    public string text1;
    public string text2;

    void Start()
    {
        // ボタンの参照を取得
        if (myButton != null)
        {
            // クリックイベントリスナーを追加
            myButton.onClick.AddListener(() => OnButtonClick(text1, text2));
        }
    }

    void OnButtonClick(string str1, string str2)
    {
        // ボタンがクリックされた時の処理
        Debug.Log("Button was clicked!"+str1+" "+str2);
    }

上記のスクリプトを使ってボタンを押してみましょう。Text1とText2で設定した文字列がConsole上に表示されていることが分かりますね。

まとめ

今回はButton実行時の処理内容をスクリプトから設定する方法を紹介しました。

Unityでボタンのクリックイベントを設定する方法には、インスペクターを使用する方法とスクリプトを使用する方法の2つがあります。それぞれに利点と欠点がありますが、スクリプトを使用する方法は、柔軟性が高く、複雑なロジックを実装する際に特に有用です。また、コードを再利用性できたりするので、インスペクターから設定するよりも多くの利点があると思います。

ボタンの処理でもっと複雑な処理を使ってみたい思ったら、ぜひ、この記事で紹介した方法を試してみてください。

コメント

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