随笔 - 12  文章 - 0  评论 - 0  阅读 - 3397

Unity 射线检测 解决UI穿透

UGUI 系统提供了简便的方法
EventSystem.current.IsPointerOverGameObject() 如果当前鼠标在 ui 上返回true 否则返回false
实例如下:

void Click ()
{
//从主这相机到鼠标点发射一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//接受射线返回的碰撞信息
RaycastHit hitInfo;
//如果射线碰撞到东西
//EventSystem.current.IsPointerOverGameObject() 如果当前鼠标在 ui 上返回true 否则返回false
if (Physics.Raycast(ray, out hitInfo) && !EventSystem.current.IsPointerOverGameObject())
{
if (hitInfo.collider.tag == "plane")
{
Debug.Log("点击了Plane...");
}
}
}
posted on   juaa  阅读(447)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示