【Unity】UIのボタンを押すと他のゲームオブジェクトにアタッチされているスクリプトのメソッドを呼び出す。引数として押したボタンの情報を渡したい
設定手順
以下の手順で設定します。
- ターゲットオブジェクトのスクリプト
- 呼び出されるメソッドを持つスクリプトをターゲットオブジェクトにアタッチします。
- UnityEventを設定するスクリプト
- UnityEventを直接使用し、インスペクターから設定できるようにします。
- Unityエディタでの設定
ButtonClickHandler
スクリプトをUIボタンにアタッチします。- ターゲットオブジェクトに
TargetScript
スクリプトがアタッチされていることを確認します。 ButtonClickHandler
スクリプトのOnClick
イベントにTargetScript
のReceiveButtonInfo
メソッドを追加します。
手順
ButtonClickHandler
スクリプトのonClick
イベントのリストに新しいイベントを追加ButtonClickHandler
コンポーネントのインスペクターでOnClick
イベントのリストを展開し、「+」ボタンをクリックして新しいイベントを追加します。
- 新しいイベントのオブジェクトフィールドにターゲットオブジェクトをドラッグ
- イベントのオブジェクトフィールドにターゲットオブジェクト(
TargetScript
がアタッチされているオブジェクト)をドラッグします。
- イベントのオブジェクトフィールドにターゲットオブジェクト(
- ドロップダウンメニューから
TargetScript
のReceiveButtonInfo
メソッドを選択- イベントのドロップダウンメニューから
TargetScript
のReceiveButtonInfo
メソッドを選択します。
- イベントのドロップダウンメニューから
- ボタンの情報を引数として設定
- 引数フィールドにボタン自体を設定します。これはインスペクターで行います。
これで、ボタンが押されると、TargetScript
のReceiveButtonInfo
メソッドが呼び出され、ボタンの情報が引数として渡されます。ButtonClickedEvent
クラスを省略して、直接UnityEvent<Button>
を使用することで、コードが簡潔になります。
参考
インスペクターでイベントハンドラを登録せず、GameObject.Findでアサインする方法
ディスカッション
コメント一覧
まだ、コメントがありません