如何防止UGUI上的UI被射穿

bool CheckGuiRaycastObjects()//测试UI射线

{

PointerEventData eventData = new PointerEventData(eventSystem);

eventData.pressPosition = Input.mousePosition;

eventData.position = Input.mousePosition;

List<RaycastResult> list = new List<RaycastResult>();

RaycastInCanvas.Raycast(eventData, list);

//Debug.Log(list.Count);

return list.Count > 0;

}

上面的方法通过在Update内判断Bool值,为真则直接返回。上面的方法可能导致寻路走到一半卡住。


下面的方法可以通过修改逻辑来控制。

需要引用UnityEngine.EventSystem

void Update ()

{

if (EventSystem.current.IsPointerOverGameObject ())

Debug.Log ("当前触摸在UI上");

else

Debug.Log ("当前没有触摸在UI上");

}

另外:Graphics
Raycaster的Raycast是个虚函数,可以写个Graphics
Raycaster的派生类,在默认的Raycast操作执行完以后,用自定义的layer进行筛选,把不需要响应的gameobject去掉。

时间: 2024-10-11 13:08:28

如何防止UGUI上的UI被射穿的相关文章

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

可能用得上的UI控件

为了便于开发者打造各式各样的优秀App,UIKit框架提供了非常多功能强大又易用的UI控件以下列举一些在开发中可能用得上的UI控件:   红色表明最常用,蓝色代表一般,黑色代表几乎不用(这不是绝对的,仅供参考)

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_EDIT

unity获取ugui上鼠标位置

public class GetMousePos : MonoBehaviour { public Canvas canvas;//画布 private RectTransform rectTransform;//坐标 void Start() { canvas = GameObject.Find("Canvas").GetComponent<Canvas>(); rectTransform = canvas.transform as RectTransform; //也可

SAP S/4HANA系统Fiori UI上Adapt UI按钮显示与否的控制逻辑

I use the same user to log on the same system, however some times the Adapt UI button is available but some times not. This behavior is very weird. See Shell source code for answer. The "Adapt UI" button is only available if shell is working und

Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)

解决方案 : http://www.cnblogs.com/fly-100/p/4570366.html 这里我们直接在使用Input.GetMouseButtonDown(0)的地方加了一个检测函数,CheckGuiRaycastObjects,如下 bool CheckGuiRaycastObjects() { PointerEventData eventData = new PointerEventData(Main.Instance.eventSystem); eventData.pre

【Unity】UGUI无法修改UI元素的Pivot锚点位置

如下图,要点击切换左边的Toggle按钮变为Pivot才可以编辑Pivot! 参考: https://answers.unity.com/questions/871238/cant-change-the-pivot-of-a-ui-element.html 原文地址:https://www.cnblogs.com/guxin/p/unity-ugui-cannot-set-ui-pivot-position.html

Unity4.6新UI系统初探(uGUI)

一.引言 Unity终于在即将到来的4.6版本内集成了所见即所得的UI解决方案(视频).事实上从近几个版本开始,Unity就在为这套系统做技术扩展,以保证最终能实现较理想的UI系统.本文试图通过初步的介绍和试用,让读者对这套系统有大体的了解,以便更进一步评估这套UI系统好不好用,适合用在什么项目.为了避免坑挖太深,更进一步的试用和评估我将在<用uGUI开发自定义Toggle Slider控件>中进行论述.为论述方便,下文将这套New UI System简称为uGUI,并且以X-UI指代现有第三

Mac下的UI自动化测试 (上)

在我看来,实现UI自动化测试的过程一向都是令人快乐的事情,而维护它们就是跟噩梦一样了,尤其是对每次CI产生的build进行BVT测试,由于开发不会告诉你任何UI的变化,那么你拿到的测试结果就势必会一片红了.但是对于界面相对稳定的项目,有大量回归测试需要进行的项目,实现UI自动化的投资回报率还是很高的. 最近我实现了公司一个产品在Mac OSX上的UI自动化测试,下面就把具体的细节写出来. 首先,选用的是由 MIT 研究团队发布的图形化编程技术 Sikuli,它以图像检索为基础,提供了一套基于 J