Unity 解决点击 UI 穿透问题
来源:互联网 发布:办公软件表格 编辑:程序博客网 时间:2024/05/15 18:20
最近在学习的过程中遇到一个问题,那就是当有 ui 时如果你点击 ui,这时如果鼠标下面还有一些3d物体也有点击效果,这时候也会触发。这是一位点击的时候,鼠标“穿透”了。,但我们是不想要这种效果发生的。那我们该怎么办?
貌似 使用 NGUI 的话 有一个判断可以使用,利用 UICamera.hoveredObject 来判断,如果鼠标在 ui 上返回 true,否则返回 false。
但是,如果我们使用的 UGUI 的话,并没有这个方法。那我们也可以使用其他方法,UGUI 系统提供了更为简便的方法。好,现在我们就来测试一下。
我们先新建一个 Plane,然后给他添加一个 tag 为 plane。然后给摄像机添加一个叫做 MouseClick 的脚本:
using UnityEngine;using System.Collections;public class MouseClick : MonoBehaviour { // Update is called once per frame void Update () { //如果左键按下 if (Input.GetMouseButtonDown(0)) { Click(); } } void Click () { //从主这相机到鼠标点发射一条射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //接受射线返回的碰撞信息 RaycastHit hitInfo; //如果射线碰撞到东西 if (Physics.Raycast(ray, out hitInfo)) { if (hitInfo.collider.tag == "plane") { Debug.Log("点击了Plane..."); } } }}
然后运行程序,当我们点击到 Plane 的时候就会打印日志了。
现在我们添加一个 Button 也给它添加一个 脚本 BtnClick:
using UnityEngine;using System.Collections;public class BtnClick : MonoBehaviour { public void Click () { Debug.Log("点击了按钮..."); }}
运行程序后,当我们点击 Plane 是正常打印日志的,但是,当我们点击按钮时,会发现 两个日志都打印了:
这时候,修改 MouseClick 脚本,让点击正常:
using UnityEngine;using System.Collections;using UnityEngine.EventSystems;public class MouseClick : MonoBehaviour { // Update is called once per frame void Update () { //如果左键按下 if (Input.GetMouseButtonDown(0)) { Click(); } } 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..."); } } }}
现在运行程序,鼠标就不会穿透了。
工程地址:http://pan.baidu.com/s/1mhOKzR6 密码 suwt
1 0
- Unity 解决点击 UI 穿透问题
- Unity 解决UI点击穿透问题
- unity中解决UI穿透问题
- UGUI UI点击穿透问题
- Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- 【NGUI】Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- Unity UGUI 鼠标穿透UI问题
- 解决ugui穿透ui点击到游戏对象上的问题
- Unity一步解决UGUI穿透问题
- 解决Fragment内点击穿透问题
- 解决布局点击事件穿透的问题
- 解决Fragment内点击穿透问题
- 解决抽屉点击事件穿透问题
- 解决Fragment内点击穿透问题
- 解决布局点击事件穿透的问题
- 解决点击事件穿透的问题
- unity结合FingerGestures在真机上UI穿透问题
- C语言小笔记
- 一起来学Android Studio:(一)Hello world
- 使用 LruCache 来缓存图片来防止OOM
- View的绘制过程分析
- Linux中bond网卡绑定方法
- Unity 解决点击 UI 穿透问题
- poj 2109 二分+大数乘法
- 如何查找域名对应IP地址?
- Google 2016 i/o 大会
- MyBatis Review——整合ehcache
- shadow dom介绍
- Theme.Holo.Light详解
- Python爬虫
- 常用命令