QA@IT
«回答へ戻る

回答を投稿

試している内容がよくわからないのですが、
uGUIオブジェクトのButtonに質問のコードを登録してるのでしょうか?
名前をOnClickにしてボタンにアタッチしていると、OnClickも発動しているような気がします。

イベントを細かく補足したいのであれば、EventTriggerのListnerを追加するようなスクリプトの方が良さそうな気がします。

公式の
https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

下側の個別のdelegateのサンプルのように、
Startで動的に登録してみてはどうでしょう。その際名前は既存のもの(OnClickやOnPointerDown)には しない ように注意してください。

public class EventTriggerDelegateExample : MonoBehaviour
{
    void Start()
    {
        EventTrigger trigger = GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerDown;
        entry.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); });
        trigger.triggers.Add(entry);
    }

    public void OnPointerDownDelegate(PointerEventData data)
    {
        Debug.Log("OnPointerDownDelegate called.");
    }
}
試している内容がよくわからないのですが、
uGUIオブジェクトのButtonに質問のコードを登録してるのでしょうか?
名前をOnClickにしてボタンにアタッチしていると、OnClickも発動しているような気がします。

イベントを細かく補足したいのであれば、EventTriggerのListnerを追加するようなスクリプトの方が良さそうな気がします。

公式の
https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

下側の個別のdelegateのサンプルのように、
Startで動的に登録してみてはどうでしょう。その際名前は既存のもの(OnClickやOnPointerDown)には **しない** ように注意してください。

```cs
public class EventTriggerDelegateExample : MonoBehaviour
{
    void Start()
    {
        EventTrigger trigger = GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerDown;
        entry.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); });
        trigger.triggers.Add(entry);
    }

    public void OnPointerDownDelegate(PointerEventData data)
    {
        Debug.Log("OnPointerDownDelegate called.");
    }
}
```