Unity 检测UGUI组件的RaycasrTarget是否勾选
2017-02-14 13:52
429 查看
转载自蛮牛文章 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#] 纯文本查看 复制代码 ? 如下图所示,加上上面的脚本后,可以在scene试图中直接看到,蓝色框表示的就是勾选过RaycastTarget的UI。 有了辅助框后,如下图所示,我就可以很方便的把不需要响应的RaycastTarget去掉即可。 测试环境 Unity 5.3.7 Canvas的参数 UICamera相机的参数 这个脚本无论是运行模式,还是编辑模式都可以看到蓝色的辅助线。 |
相关文章推荐
- Unity uGUI鼠标击穿检测
- Unity UGUI——Text组件(Paragraph)
- Unity中检测玩家、NPC等是否在视野内
- 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题
- 【Unity】UGUI Image组件检视面板编辑器扩展(ImageEditor类)
- 一条命令检测你的机器是否支持 3D Unity 界面
- UGUI - 判断是否点击在UI 上 Bug,IsPointerOverGameObject()在移动端检测失败
- [UnityUI]UGUI射线检测
- unity开发之八:如何在UGUI其他的组件上添加点击事件(解答)
- Unity检测目标点是否在扇形攻击范围内
- Unity 检测,是否触摸到UI
- Unity检测目标点是否在扇形攻击范围内
- Unity 鼠标拾取检测 (Mouse Raycast ) UGUi面板随鼠标指针显隐
- Unity_检测网络是否通畅
- asp代码实现检测组件是否安装的函数
- 关于Unity5.5+中的UGUI的ImageMask组件在安卓设备不能正常显示的问题的解决方案
- 【Unity】UGUI如何判断鼠标或者手指是否点击到UI上
- Unity UGUI——Rect Transform组件(Anchor Presets)
- [Unity UGUI]点击和长按组件
- 如何检测你的机器是否支持Ubuntu的 3D Unity 界面