您的位置:首页 > 移动开发 > Unity3D

当快速把鼠标移出unity会执行OnPoi…

2016-12-16 15:16 260 查看
首先这个问题我百度过,没有浏览到有用的信息。贴上代码:

    public void
OnPointerEnter(PointerEventData eventData)
    {
     
  Debug.LogError("mouse enter");
    }
    public void
OnPointerExit(PointerEventData eventData)
    {
     
  Debug.Log("mouse exit");
    }

在public class YouClass:MonoBehaviour, IPointerClickHandler,
IPointerEnterHandler, IPointerExitHandler像这样unity就能自动执行OnPointerExit OnPointerEnter(图片要勾选Raycast
Target)

程序正常运行应该是 鼠标移入图片 打印 mouse enter 移出 打印mouse exit
当快速移出则 打印mouse
exit mouse
enter ,所以多执行了一次 OnPointerEnter

解决方法:
bool IsEnter = true;
bool IsExit = true;

public void OnPointerEnter(PointerEventData eventData)
{

     
  if (IsEnter)
     
  {
     
     
Debug.LogError("mouse enter");
     
      IsEnter =
false;
     
      IsExit =
true;

}
}

public void OnPointerExit(PointerEventData eventData)
{
     
  if (IsExit)
     
  {
     
     
Debug.Log("mouse exit");
     
     
StartCoroutine(SleepExit());
     
      IsExit =
false;

}
}

IEnumerator SleepExit()
    {
     
  yield return new WaitForSeconds(0.005f);
     
  IsEnter = true;
    }

就是认为在执行完OnPointerExit后等一些时间执行OnPointerEnter
我只是个菜鸟 欢迎有更好的方法一起学习下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐