当前位置:   article > 正文

Unity UGUI与射线检测冲突问题解决_unity ui点击与射线检测冲突

unity ui点击与射线检测冲突

 问题产生的背景:我们在开发一些游戏的时候,比如捕鱼或者射击类游戏,鼠标(手指)点击会发射子弹。但是当我们点击在UI上面的时候,我们不希望触发射线检测,怎么解决,关键代码就是

 EventSystem.current.IsPointerOverGameObject()  如果当前鼠标在 ui 上返回true 否则返回false。

如下代码所示:

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.EventSystems;
  4. public class MenuClick : MonoBehaviour {
  5. // Update is called once per frame
  6. void Update () {
  7. if (Input.GetMouseButtonDown(0))
  8. {
  9. OnClick();
  10. }
  11. }
  12. void OnClick ()
  13. {
  14. //从主相机到鼠标点发射一条射线
  15. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  16. //接受射线返回的碰撞信息
  17. RaycastHit hitInfo;
  18. //如果射线碰撞到东西
  19. if (Physics.Raycast(ray, out hitInfo) && !EventSystem.current.IsPointerOverGameObject())
  20. {
  21. Debug.DrawLine(ray.origin, hitInfo.point);//划出射线,只有在scene视图中才能看到
  22. GameObject gameObj = hitInfo.collider.gameObject;
  23. Debug.Log("click object name is " + gameObj.name);
  24. }
  25. }
  26. }

自己运行,查看效果即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/997491
推荐阅读
相关标签
  

闽ICP备14008679号