如何使用 EventTrigger、Unity 从 C# 脚本访问 Dynamic BaseEventData?

How to access Dynamic BaseEventData from C# script using EventTrigger, Unity?

我这里有一个代码,我想在发生指针单击时调用一个函数。

EventTrigger trigger = instance.AddComponent<EventTrigger>();
var pointerClick = new EventTrigger.Entry();
pointerClick.eventID = EventTriggerType.PointerClick;
pointerClick.callback.AddListener(delegate { UIController.Click(???); });
trigger.triggers.Add(pointerClick);

现在,我想知道点击是左点击还是右点击。
来自该线程的代码:https://forum.unity.com/threads/how-to-detect-handle-right-click.355146/

public void Click(BaseEventData bed)
{
        PointerEventData ped = (PointerEventData)bed;
        Debug.Log("Button: " + ped.pointerId);

        // pointerId will be -1 for left mouse button, -2 for right
}

(根据结果我必须调用其他方法 - 这在这里并不重要。)

问题是我不知道如何为函数提供 BaseEventData 参数输入。
我知道,在检查器中有 Dynamic BaseEventData 但在脚本中?

将什么作为参数输入(BaseEventData bed for Click())?

感谢您的帮助!

您可以声明UIController.Click如下:

public void Click( BaseEventData bed )
{
    // ...
}

然后:pointerClick.callback.AddListener( UIController.Click );

要确定单击的按钮,请使用 PointerEventData 的 button 属性,而不是 pointerId 属性:

if( ped.button == PointerEventData.InputButton.Left )
{
    // Left clicked
}