Unity判断鼠标是否在UI(UGUI)上

"EventSystem.current.IsPointerOverGameObject()"

UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分。为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上。

 1 #if UNITY_ANDROID && !UNITY_EDITOR
 2 #define ANDROID
 3 #endif
 4
 5
 6 #if UNITY_IPHONE && !UNITY_EDITOR
 7 #define IPHONE
 8 #endif
 9
10
11
12 using UnityEngine;
13 using UnityEngine.UI;
14 using System.Collections;
15 using UnityEngine.EventSystems;
16 public class NewBehaviourScript : MonoBehaviour {
17
18     // Use this for initialization
19     void Start () {
20
21     }
22
23
24     void Update()
25     {
26         if (Input.GetMouseButtonDown(0)||(Input.touchCount >0 && Input.GetTouch(0).phase == TouchPhase.Began))
27         {
28 #if IPHONE || ANDROID
29             if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
30 #else
31             if (EventSystem.current.IsPointerOverGameObject())
32 #endif
33                 Debug.Log("当前触摸在UI上");
34
35             else
36                 Debug.Log("当前没有触摸在UI上");
37         }
38     }
39 }
时间: 2024-10-27 13:37:01

Unity判断鼠标是否在UI(UGUI)上的相关文章

Unity3D 判断鼠标是否按在UGUI上

判断鼠标是否点击在UGUI上 #if UNITY_ANDROID && !UNITY_EDITOR #define ANDROID #endif #if UNITY_IPHONE && !UNITY_EDITOR #define IPHONE #endif using UnityEngine; using UnityEngine.UI; using System.Collections; using UnityEngine.EventSystems; public clas

unity判断是否点击了UI界面

1.判断是否点击 UGUI界面: using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class UiClickTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Up

【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息

之前一直用NGUI HUD Text插件做这个功能,感觉一个小功能就导一个插件进来简直丧心病狂.然后就自己写了一个~思路和插件的方式大同小异.但是呀但是呀~我的这小思路看起来绝对比插件的方便啊~因为呀因为呀,我的就这一个功能啊~ 小二,上代码~~~ Camera cam;//用于发射射线的相机 Camera UIcam;//UI层的相机 Vector3 mp;//鼠标位置 Transform targetTransform;//点选的物体 public UILabel Lab; void Sta

canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上

canvas 里绘制的图形不是一个实体 DOM,所以要给每个绘制的图形添加事件操作比给 DOM 添加事件要复杂很多. 所以,我们需要使用一个 canvas 的 isPointInPath(x, y) 方法,来获取鼠标相对于浏览器的坐标,然后还需要计算出鼠标相对于 canvas 画布的坐标,最后通过 isPointInPath(x, y) 方法判断此坐标是否在绘制的元素上,进行相应的操作. isPointInPath() 方法是针对的当前绘制的路径,而鼠标在执行操作的时候,我们会根据需要监听鼠标的

Qt判断鼠标在控件上

QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝对位置进行换算,这里本文采用将鼠标绝对位置换算到控件上,示例代码如下: if(ui->groupBox->geometry().contains(this->mapFromGlobal(QCursor::pos()))) 原文地址:https://www.cnblogs.com/wangji

关于Unity中鼠标选取物体的解决方案

今天修改了之前写的飞机大战的代码,原来的不足之处是点击屏幕的任意一点都可以移动飞机,也就是没有检测鼠标到底有没有点到飞机上. 我先是用之前的3D拾取技术,发现没有反应,才意识到我这个plane飞机节点挂载的是Box Collier2D的碰撞器组件,不是Box Collier,3D射线拾取技术在2D游戏里面还用不了. 后来我百度了一下,才知道用UGUI写的2D游戏用鼠标选取物体不用射线检测,要用事件系统.但是我不会用OnMouseEnter()和OnPointerEnter(),所以还是想用射线来

判断鼠标移入移出元素时的方向

本文要介绍的是一种鼠标从一个元素移入移出时,获取鼠标移动方向的思路.这个方法可以帮助你判断鼠标在移入移出时,是从上下左右的哪个方向发生的.这个思路,是我自己琢磨出来,利用了一点曾经高中学过的数学知识,但是非常简单好理解,希望能对你有所帮助. 在线demo: http://liuyunzhuge.github.io/blog/mouse_direction/demo1.html 相关代码: https://github.com/liuyunzhuge/blog/blob/master/mouse_

JS判断鼠标移入元素的方向

最终效果 这里的关键主要是判断鼠标是从哪个方向进入和离开的 $("li").on("mouseenter mouseleave",function(e) { var w = this.offsetWidth; var h = this.offsetHeight; var x = e.pageX - this.getBoundingClientRect().left - w/2; var y = e.pageY - this.getBoundingClientRect

判断鼠标当前坐标是否在当前渲染对象区域中

不啰嗦上代码: //判断鼠标当前坐标是否在当前渲染对象区域中 isMouseIn:function(){ var x = Mouse.gX() || Touch.gX(), y = Mouse.gY() || Touch.gY(); var sc = this.owner;var gx = sc.x, gy = sc.y; //转换鼠标坐标到游戏窗口坐标系 var cd = xengine.fn.MathUtil.mapSToCoord(x,y,gx,gy); var hw = this.w*0