OnPointerClick是unity事件系统自带的点击推送事件。继承IPointerClickHandler接口,并在脚本中实现接口,点击挂此脚本的物体系统会调用实现的OnPointerClick函数。
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.button == 0)
{
if (eventData.clickCount == 1)
{
//TODO1
}
else if (eventData.clickCount == 2)
{
//TODO2
}
}
}
下面说下这个接口的缺陷。当我们要判断是双击物体还是单击物体时,我们要使用PointerEventData里的clickCount。用户双击会连续两次调用OnPointerClick事件。第一次执行TODO1,第二次执行TODO2。如果在需求中要分清是单击还是双击的时候就会出现错误。即使双击,也会执行单击事件。这块我觉得是缺陷。
我的解决方案是自己延迟执行事件。即在外层声明一个委托。分别在单机和双击的时候绑定事件。在单击中执行协程延迟一秒执行委托事件。代码挺丑陋的,暂时是满足需求。设定的延迟判断时间是一秒。代码如下:文章来源:https://www.toymoban.com/news/detail-513707.html
public Action ClickAction = null;
public void OnPointerClick(PointerEventData eventData)
{
//左手
if (eventData.button == 0)
{
if (eventData.clickCount == 1)
{
ClickAction =Event1;
StartCoroutine(DelayFuc());
}
else if (eventData.clickCount == 2)
{
ClickAction = Event2;
}
else
ClickAction = null;
}
}
IEnumerator DelayFuc()
{
yield return new WaitForSeconds(1);
ClickAction?.Invoke();
}
如有更好的方案欢迎留言指导。文章来源地址https://www.toymoban.com/news/detail-513707.html
到了这里,关于Unity3D开发之OnPointerClick事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!