查看: 1383|回复: 1
打印 上一主题 下一主题

[其他] 检测是否点击到UI的代码

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-12-15 10:23:49 |只看该作者 |倒序浏览
来自:F1085645195

private GraphicRaycaster _raycaster;//图形射线(只检测继承Graphic的组件,一般是UI)
  1. private void Start()
  2.     {
  3.         _raycaster = FindObjectOfType<GraphicRaycaster>();
  4.     }
  5.     /// <summary>
  6.     /// 检测是否点击UI
  7.     /// </summary>
  8.     /// <returns></returns>
  9.     private bool IsUI()
  10.     {
  11.         PointerEventData data = new PointerEventData(EventSystem.current);
  12.         data.pressPosition = Input.mousePosition;
  13.         data.position = Input.mousePosition;
  14.         List<RaycastResult> results = new List<RaycastResult>();
  15.         _raycaster.Raycast(data, results);
  16.         return results.Count > 0;
  17.     }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

5

主题

7

听众

2429

积分

中级设计师

Rank: 5Rank: 5

纳金币
149
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2019-12-17 09:11:03 |只看该作者
这是个不错的方法,相比于直接调用UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()让人更能明确其原理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-12-2 13:56 , Processed in 0.085690 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部