Unity 检测UGUI组件的RaycasrTarget是否勾选
来源:互联网 发布:上海知行生物科技传销 编辑:程序博客网 时间:2024/05/25 18:09
转载自蛮牛文章 http://www.manew.com/thread-100366-1-1.html
看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。
团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d以后复制出来的也就带了这个属性,很可能新复制出来的图片是不需要响应的,开发人员又没有取消勾选掉,这就出问题了。
所以RaycastTarget如果被勾选的过多的话, 效率必然会低。。这个问题其实困扰了我很久,我终于想了一个还算好的方法解决它。
把下面代码挂在游戏中的任意GameObject上,原理其实很简单就是绘制辅助线,当UI中RaycastTarget发生变化,SceneView中的蓝色辅助线也会刷新,还是挺方便的。(感谢钱钱告诉我的 GetWorldCorners 方法)
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
#if UNITY_EDITOR
using
UnityEngine;
using
System.Collections;
using
UnityEngine.UI;
public
class
DebugUILine : MonoBehaviour {
static
Vector3[] fourCorners =
new
Vector3[4];
void
OnDrawGizmos()
{
foreach
(MaskableGraphic g
in
GameObject.FindObjectsOfType<MaskableGraphic>())
{
if
(g.raycastTarget)
{
RectTransform rectTransform = g.transform
as
RectTransform;
rectTransform.GetWorldCorners(fourCorners);
Gizmos.color = Color.blue;
for
(
int
i = 0; i < 4; i++)
Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]);
}
}
}
}
#endif
如下图所示,这是之前游戏中的一个简单的界面。 在SceneView视图中,我并不知道那些勾选了RaycastTarget,以前的做法需要一个个的去找(这个太麻烦了)
如下图所示,加上上面的脚本后,可以在scene试图中直接看到,蓝色框表示的就是勾选过RaycastTarget的UI。
有了辅助框后,如下图所示,我就可以很方便的把不需要响应的RaycastTarget去掉即可。
测试环境 Unity 5.3.7
Canvas的参数
UICamera相机的参数
这个脚本无论是运行模式,还是编辑模式都可以看到蓝色的辅助线。
0 0
- Unity 检测UGUI组件的RaycasrTarget是否勾选
- Unity UGUI--Text组件
- Unity uGUI鼠标击穿检测
- Unity UGUI 检测按钮的按下与抬起
- Unity如何修改UGUI下组件的长度和宽度
- UGUI的Dropdown组件
- [Unity UGUI]点击和长按组件
- Unity UGUI 是否点击在UI上
- [Unity][UGUI]UGUI的饼状统计图
- Unity 5.3 uGUI的canvas
- Unity UGUI的各种属性
- Unity-UGUI的点击接口
- unity的ugui中文竖排
- Unity UGUI——提供可视功能的UI组件(Text)
- unity开发之八:如何在UGUI其他的组件上添加点击事件(解答)
- 手机触屏检测,检测是否点击在UGUI上
- 射线检测UGUI的Button组件,控制Button四种状态状态
- 【Unity3D】UGUI组件的监听
- Onvif学习之客户端设备发现
- java基础学习面向对象之代码块 五-8
- FDCT和IDCT的计算公式
- 【bzoj2002】弹飞绵羊 LCT
- Swift3.0 -- 闭包的循环引用与OC的对比
- Unity 检测UGUI组件的RaycasrTarget是否勾选
- WEB入门一 网页设计基础
- lua之安装openresty
- js中模板化开发,text/template
- Android 原始对话框八种
- 20170214.最小二乘法
- 2017.2.14依旧PAT乙级15分题
- 基于ArcGIS和Skyline三维产品B/S二次开发分析对比
- 如何快速搭建一个简单图像搜索引擎