facebook twitter hatena line email

「Unity/UIクリック」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「UIにクリックイベントを追加 <pre> GameObject colorImage = GameObject.Find("ColorImage"); EventTrigger trigger = colorImage.AddComponent<EventTrigger>(); EventT...」)
 
(UIにクリックイベントを追加(その1))
 
(同じ利用者による、間の9版が非表示)
行1: 行1:
UIにクリックイベントを追加
+
 
 +
==UIにクリックイベントを追加(その1)==
 +
以下のクラスをClickableContent.csで作り、クリックさせたい、UI部品に予めGUIでAddComponentしておく。
 +
<pre>
 +
using UnityEngine;
 +
using UnityEngine.EventSystems;
 +
 
 +
public class ContentClickListener : MonoBehaviour, IPointerClickHandler
 +
{
 +
    public void OnPointerClick(PointerEventData eventData)
 +
    {
 +
        Debug.Log("OnPointerClick!!");
 +
    }
 +
}
 +
</pre>
 +
参考:https://pafu-of-duck.hatenablog.com/entry/2018/08/18/224254
 +
 
 +
===インナークラス形式===
 +
ContentClickListenerはインナークラスでも動く。
 +
<pre>
 +
using UnityEngine.EventSystems;
 +
using System;
 +
 
 +
public class SettingScene : MonoBehaviour
 +
{
 +
    public class ContentClickListener : MonoBehaviour, IPointerClickHandler
 +
    {
 +
        public void OnPointerClick(PointerEventData eventData)
 +
        {
 +
            Debug.Log("OnPointerClick!!");
 +
        }
 +
    }
 +
    void Start() {
 +
        GameObject objText = GameObject.Find("/Canvas/Text"); 
 +
        ContentClickListener listener = objText.AddComponent<ContentClickListener>();
 +
    }
 +
}
 +
</pre>
 +
 
 +
==UIにクリックイベントを追加(その2)==
 
<pre>
 
<pre>
 
GameObject colorImage = GameObject.Find("ColorImage");
 
GameObject colorImage = GameObject.Find("ColorImage");
行5: 行44:
 
EventTrigger.Entry entry = new EventTrigger.Entry();
 
EventTrigger.Entry entry = new EventTrigger.Entry();
 
entry.eventID = EventTriggerType.PointerClick;
 
entry.eventID = EventTriggerType.PointerClick;
// entry.callback.AddListener(Clicked);
 
 
entry.callback.AddListener(delegate {
 
entry.callback.AddListener(delegate {
            SetColor(colorName);
+
    SetColor(colorName);
 
});
 
});
trigger.triggers.Add(entry);
+
trigger.triggers.Add(entry);
 
</pre>
 
</pre>
 +
 +
ただし、ScrollView内のオブジェクトに適用すると、Scrollが無効化されてしまうので、ScrollViewの中で使う場合は、その1を推奨

2022年8月9日 (火) 23:33時点における最新版

UIにクリックイベントを追加(その1)

以下のクラスをClickableContent.csで作り、クリックさせたい、UI部品に予めGUIでAddComponentしておく。

using UnityEngine;
using UnityEngine.EventSystems;

public class ContentClickListener : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("OnPointerClick!!");
    }
}

参考:https://pafu-of-duck.hatenablog.com/entry/2018/08/18/224254

インナークラス形式

ContentClickListenerはインナークラスでも動く。

using UnityEngine.EventSystems;
using System;

public class SettingScene : MonoBehaviour
{
    public class ContentClickListener : MonoBehaviour, IPointerClickHandler
    {
        public void OnPointerClick(PointerEventData eventData)
        {
            Debug.Log("OnPointerClick!!");
        }
    }
    void Start() {
        GameObject objText = GameObject.Find("/Canvas/Text");  
        ContentClickListener listener = objText.AddComponent<ContentClickListener>();
    }
}

UIにクリックイベントを追加(その2)

GameObject colorImage = GameObject.Find("ColorImage");
EventTrigger trigger = colorImage.AddComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;
entry.callback.AddListener(delegate {
    SetColor(colorName);
});
trigger.triggers.Add(entry);

ただし、ScrollView内のオブジェクトに適用すると、Scrollが無効化されてしまうので、ScrollViewの中で使う場合は、その1を推奨