Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8587

uGUIのButtonをプログラムから押す方法【Unity】【uGUI】 - (:3[kanのメモ帳]

$
0
0

この記事でのバージョン
Unity 2022.3.21f1


はじめに

UnityのuGUIではButtonというコンポーネントを使う事で、

押した時に処理が実行できるボタンを簡単に実装出来ます。


今回はそのButtonをプログラムから押す方法の紹介です!

なお、「タッチ(マウス)操作とゲームパッド操作に両方に対応したい」

「コントローラーで決定した時もボタンを押したように見せたい」みたいな時に役立つかと思います。


なお、記事中では以下のアセットを使っています。

Clean & Minimalist GUI Pack - Unity Asset Store



uGUIのButtonをプログラムから押す方法

早速ですがButtonを押した状態にするにはOnPointerDown

それを解除するにはOnPointerUpを使います。

using System.Threading.Tasks;//Task使うのに必要using UnityEngine.EventSystems;//PointerEventData使うのに必要using UnityEngine.UI;//Button使うのに必要
privateasyncvoid Push() {
  //ボタンのコンポーネントを取得var button = GetComponent<Button>();

  //ボタンを押した状態にする
  button.OnPointerDown(new PointerEventData(EventSystem.current));
    
  //1秒待ってから戻すawait Task.Delay(1000);
    
  //ボタンを戻す
  button.OnPointerUp(new PointerEventData(EventSystem.current));
}


ただし、これだとButtonのonClickに登録した処理は実行されないので、

処理を実行したい場合はOnPointerClickも実行します。

privateasyncvoid Push() {
  //ボタンのコンポーネントを取得し、押した時の処理登録var button = GetComponent<Button>();
  button.onClick.AddListener(() => {
    Debug.Log("ボタンを押した");
  });

  //ボタンを押した状態にする
  button.OnPointerDown(new PointerEventData(EventSystem.current));

  //ボタンを押した時の処理を実行する
  button.OnPointerClick(new PointerEventData(EventSystem.current));
    
  //1秒待ってから戻すawait Task.Delay(1000);
    
  //ボタンを戻す
  button.OnPointerUp(new PointerEventData(EventSystem.current));
}




Viewing all articles
Browse latest Browse all 8587

Trending Articles