如何使用 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
}
我这里有一个代码,我想在发生指针单击时调用一个函数。
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
}