解决RaycastTarget勾选过多的烦恼

看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。

团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d以后复制出来的也就带了这个属性,很可能新复制出来的图片是不需要响应的,开发人员又没有取消勾选掉,这就出问题了。

所以RaycastTarget如果被勾选的过多的话, 效率必然会低。

把下面代码挂在游戏中的任意GameObject上,原理其实很简单就是绘制辅助线,当UI中RaycastTarget发生变化,SceneView中的蓝色辅助线也会刷新,还是挺方便的。

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEngine.UI;
 4 public class DebugUILine : MonoBehaviour {
 5     static Vector3[] fourCorners = new Vector3[4];
 6     void OnDrawGizmos()
 7     {
 8         foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
 9         {
10             if (g.raycastTarget)
11             {
12                 RectTransform rectTransform = g.transform as RectTransform;
13                 rectTransform.GetWorldCorners(fourCorners);
14                 Gizmos.color = Color.blue;
15                 for (int i = 0; i < 4; i++)
16                     Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]);
17
18             }
19         }
20     }
21 }
时间: 2024-08-28 12:29:56

解决RaycastTarget勾选过多的烦恼的相关文章

用DIV遮罩解决checkbox勾选无效的问题

在前端开发的过程中,遇到一种情况,需要勾选,为了用户的操作便捷就将click事件放到了DIV上.(其中使用了knockout.js) 代码大概如下: <div id="one" data-biind="click:clickevent"> <input type="checkbox"><span>有事请勾我</span> </div> 但是这样写出现了一个奇怪的现象,鼠标点击div一切正

回收站勾选变灰了无法选择 桌面回收站不见了 解决办法

有一天你突然发现桌面回收站图标不见了,于是想到 桌面>>右键>>个性化>>更改桌面图标>>勾选“回收站”>>确定,OK! 但郁闷的是,打开“更改桌面图标”后发现: 回收站勾选变灰了,无法选择.这不是坑爹吗 解决办法如下: 运行里输入“gpedit.msg"(打开本地组策略编辑器) 依次打开:用户配置>>管理模板>>桌面>>从右边选择“从桌面上删除回收站”(双击) 如下图: 打开后发现选择的是“已启用”

eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,

在创建maven工程时,在设置output folders时,总是勾选以后,老是自动恢复到原来的状态,对比其他的maven的工程发现是在创建maven时候选择的项目为pom,而不是war或者jar,将pom的类型切换到war就可以勾选了

解决jquery操作checkbox全选全不选无法勾选问题

最近在学习中使用jquery操作checkbox,使用下面方法进行全选.反选:$("input[name='checkbox']").attr("checked","checked");调试时,前两次都没有问题,可以正常显示选中和取消,但当再去选中的时候,复选框的属性checkbox值变为"checked",没问题,但是复选框却不在显示选中状态,明明属性值改了,但是却不显示勾选,太诡异了.代码修改了却得不到正确的显示状态,纠结

jquery checkbox勾选/取消勾选的诡异问题

<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br /> <input type="checkbox" name="items" value="足球" />足球 <input type="checkbox" name="items" v

bootgrid修改成可以全勾选和全取消勾选操作

1. 引言 由于项目需要,需要在不同页面上选择全勾选能全部勾选所有的记录,反勾选也如此.这个需求可以解决了一个样例:如果有150条记录,当前页就10条,你又在每一个页面勾选部分的记录,然后,如果你要全部全选,需要在每一个页面上勾上全选checkbox,全部反选也有这个问题. 2.修改的代码 基于jQuery Bootgrid v1.3.1这个版本. bootgrid.js修改的部分如下: //原有的select和deselect方法 /** * Selects rows by ids. Sele

通过递归算法完成树的级联勾选的一般思路

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在某个项目中,发现当tree上加上checkbox后,初始化该树时会特别慢.现场树上的节点最深有三层,节点个数总和有200多个.经排查,为该tree的参数中开启了级联勾选的参数,导致初始化该树时每初始化一个节点便进行了一次级联判断,如此效率过低导致. 现在将级联勾选去除后,涉及到如下几个问题需要解决: 初始化时,需要在前端或者后端完成级联勾选逻辑. 手动勾选树

jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了:         checkbox标签已有checked=checked但是不显示勾选,网上也查过有解决方案,就是将   $("...").attr("checked&qu

jquery attr prop checkbox已有checked=checked但不显示勾选问题

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了: checkbox标签已有checked=checked但是不显示勾选,查看图片: 网上也查过有解决方案,就是将   $("...").attr("checked"