前提・実現したいこと
EventTriggerコンポーネントをアタッチする方法で、クリック処理の実装を試みているのですが、
イベントハンドラの引数にPointerEventDataが使えないような挙動になってしまいます。
使えないのでしょうか?
そうすると、PointerEventData.clickCountや、PointerEventData.position等も取得できないのでしょうか?
ご教示お願いします。
試したこと
C#
1public class EventTriggerTest : MonoBehaviour 2{ 3 void Start() 4 { 5 6 } 7 8 public void Mytap(PointerEventData eventData){ 9 //Destroy (this.gameObject); 10 11 if (eventData.clickCount > 1) { 12 Debug.Log (eventData.clickCount); 13 } 14 15 Debug.Log ("eventData.position.x:" + eventData.position.x); 16 Debug.Log ("eventData.position.y:" + eventData.position.y); 17 } 18}
このように、引数にPointerEventDataを指定すると、下図のようにMytapが候補として出てこないです。

そこで試しに引数を、BaseEventDataに変更してみました。
C#
1public void Mytap(BaseEventData eventData){ 2}
すると、今度は、

Mytapメソッドが選べるようになります。
しかしMytapメソッドの引数をBaseEventDataにしてしまうと、
メソッド内で「eventData.clickCount」「eventData.position」を取得しようとすると、
下記のようなエラーが出ます。
Assets\EventTriggerTest.cs(18,23): error CS1061: 'BaseEventData' does not contain a definition for 'clickCount' and no accessible extension method 'clickCount' accepting a first argument of type 'BaseEventData' could be found (are you missing a using directive or an assembly reference?)
BaseEventDataは、clickCount等を持っていないということなのだと把握しました。
そうすると、clickCount等を持っていないBaseEventDataを引数に指定して使う方法しかないのでしょうか?
腑に落ちないのは、こちらのリファレンスです。
IPointerClickHandler.OnPointerClick public void OnPointerClick (EventSystems.PointerEventData eventData);
OnPointerClickは、引数にPointerEventDataを指定するように書かれています。
これを見ると、引数にPointerEventDataを指定できるように思えるのですが、いかがでしょうか?
ご教示お願いします。
回答1件
あなたの回答
tips
プレビュー
退会済みユーザー
2019/03/29 07:05 編集
2019/03/29 22:05
退会済みユーザー
2019/03/30 05:39