unity射线穿透UI的问题解决方案
2017-07-21 10:06
681 查看
首先参考原文章:http://www.cnblogs.com/fly-100/p/4570366.html
致敬原作者,代码稍作修改才可使用。
首先先引入头文件
using UnityEngine.EventSystems;
using UnityEngine.UI;
然后创建变量
public GameObject changePanel;(这是要阻挡射线的UI)
public EventSystem es;
Graphics a;
主要代码段
bool CheckGuiRaycastObjects()
{
PointerEventData eventData = new PointerEventData(es);
eventData.pressPosition = Input.mousePosition;
eventData.position = Input.mousePosition;
List<RaycastResult> list = new List<RaycastResult>();
changeMatCanvas.GetComponent<GraphicRaycaster> ().Raycast (eventData, list);
return list.Count > 0;
}
在Update中加入
if (CheckGuiRaycastObjects()) return;
这样UI就可以挡住射线,不会点击到后面的碰撞体了。
有个新的解决方法
if
(Input.GetMouseButtonDown(0)||(Input.touchCount
>0
&&
Input.GetTouch(0).phase
==
TouchPhase.Began))
{
#if
UNITY_ANDROID || UNITY_IPHONE
if
(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
if
(EventSystem.current.IsPointerOverGameObject())
#endif
Debug.Log("当前触摸在UI上");
else
Debug.Log("当前没有触摸在UI上");
}
方法来自雨凇MOMO,
致敬原作者,代码稍作修改才可使用。
首先先引入头文件
using UnityEngine.EventSystems;
using UnityEngine.UI;
然后创建变量
public GameObject changePanel;(这是要阻挡射线的UI)
public EventSystem es;
Graphics a;
主要代码段
bool CheckGuiRaycastObjects()
{
PointerEventData eventData = new PointerEventData(es);
eventData.pressPosition = Input.mousePosition;
eventData.position = Input.mousePosition;
List<RaycastResult> list = new List<RaycastResult>();
changeMatCanvas.GetComponent<GraphicRaycaster> ().Raycast (eventData, list);
return list.Count > 0;
}
在Update中加入
if (CheckGuiRaycastObjects()) return;
这样UI就可以挡住射线,不会点击到后面的碰撞体了。
有个新的解决方法
if
(Input.GetMouseButtonDown(0)||(Input.touchCount
>0
&&
Input.GetTouch(0).phase
==
TouchPhase.Began))
{
#if
UNITY_ANDROID || UNITY_IPHONE
if
(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
if
(EventSystem.current.IsPointerOverGameObject())
#endif
Debug.Log("当前触摸在UI上");
else
Debug.Log("当前没有触摸在UI上");
}
方法来自雨凇MOMO,
相关文章推荐
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- Unity UGUI 鼠标穿透UI问题
- Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- 【NGUI】Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- Unity UGUI鼠标穿透UI问题(Unity官方的解决方法)
- [转]UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- Unity中使用NGUI和FingerGestures插件点击UI穿透的问题
- Unity 解决点击 UI 穿透问题
- Unity UGUI 鼠标穿透UI问题
- unity结合FingerGestures在真机上UI穿透问题
- Unity 解决UI点击穿透问题
- unity3d VR的多个Canvas下UI交互射线穿透问题
- 关于Unity5.5+中的UGUI的ImageMask组件在安卓设备不能正常显示的问题的解决方案
- Unity UI防穿透
- unity解决快速运动物体碰撞检测穿透问题
- Unity3d 加载UnityEngine.UI.dll失败的解决方案(2017.2)
- cocostudio读取UI后,触摸或者按钮点击穿透问题。
- [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题