2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クリックしたオブジェクトの情報を取得する

Last updated at Posted at 2019-10-26

Text等のObjectをクリックした時にコードを実行する、あるいはクリックされたObjectの情報を取得する方法(今のところ2Dのみ)

前提:オブジェクト(あるいは動的生成したプレハブなど)にスクリプトがアタッチされていること

###IpointClickHandlerの実装
マウスクリックを受け取るために、アタッチしたスクリプトにはインターフェースIPointerClickHandlerを実装する。以下は簡単な実装例。MonoBehaviourの他にIPointClickHandlerを継承している点に注意する。

sample01.cs
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;

public class Clicktest : MonoBehaviour,IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("クリックされたら表示する");
    }
}

ここで、クリックされたらObjectの情報を変更する方法を考えてみる。(以下は、シーンビューに配置済みのUI.Textをクリックした数だけカウントアップする)

sample02.cs
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI; //UI.Textのために必要

public class Clicktest : MonoBehaviour,IPointerClickHandler
{
    Text ClickedTextObject;

    public void OnPointerClick(PointerEventData eventData)
    {
        //eventData.pointerPressメンバから
        //どのTextObjectがクリックされたか受け取る
        ClickedTextObject = 
        eventData.pointerPress.GetComponent<Text>();

        int temp = int.Parse(ClickedTextObject.text);
        temp++;
        ClickedTextObject.text = temp.ToString();
        }
    }
}

コツは、PointerEventDataのメンバ変数をうまく使うこと。
リファレンスを見るとlastPressでもいけそうなものだが、この場合はNullになってしまう。謎。

参考リンク:
EventSystems.PointerEventData リファレンス

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?