【原因】经过反复排查,发现是因为子物体有自己的Canvas组件导致的。父物体和子物体都有Canvas组件的情况下,子物体如果要响应点击事件需要自己的GraphicRaycaster组件。
而当子物体的Canvas设置了OverrideSorting之后,父物体CanvasGroup组件的Alpha属性能影响到子物体,Interactable属性和BlocksRaycasts属性却无法影响到子物体了。
实际情况中,如果把父物体的Alpha设为0且Interactable和BlocksRaycasts设为false,而子物体的渲染有较高层级,就会覆盖掉对父物体的UI射线检测,虽然看不见子物体但是点击的依然是子物体。
【解决方案】更改父节点的CanvasGroup时,通过GetComponentsInChildren的方式获取所有子节点的CanvasGroup组件并更改对应的值

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新 Unity 开发技巧,觉得有用记得一键三连哦。 很早就想分享这个系列的文章,但是总是没有机会,最近就将这个系列整理一下,大家一起学习交流。 首先,介绍一个UGUI,NGUI是UGUI的前身, Unity 开发团队将NGUI的开发团队收到自己开发团队下,并且由此开发了UGUI。 UGUI系统是从 Unity 4.6版本后才开.
-Alpha:这个选项很多 组件 都有,用处也是一样的,在美术中,这个叫做Alpha通道的东东是用来控制透明度的,他的值从0到1.0是完全透明,1是完全不透明; -Interactable:确认该 组件 是否接受输入,当他被设置为false时,交互功能将被禁用; - Block Ray cas ts :是否让该 组件 像collider一样接受射线检测?你需要在依赖于 Canvas 的图形射线检测者上唤醒射线检测方法。这个不会作用于Physics.Ray cas t; -Ignore Parent Group s(忽略父级团)..
1.Graphic Ray cas ter:主要用于UI上的射线检测 a.挂有这个 组件 物体 ,必须也要挂上 Canvas 这个 组件 ,因为Graphic Ray cas ter依赖于 Canvas b.挂有这个 组件 物体 ,必须也要挂上继承Graphic的 组件 ,即必须要有Image/Text/RawImage三个 组件 之一 c.Ignore Reversed Graphics:是否忽略反方向的图形,如果
Canvas Group 对于UGUI来说,提供了十分重要的便利功能,并且能够受益于 Unity 实现的性能优化。从命名来看 Group 明显是针对“批量”操作的一个概念。对于复杂的UI界面,会有意想不到的效果和效率。 Alpha 能够控制所有子节点UI元素的透明度。无论界面多么的复杂,只要是Graphic的子类,都能够被控制。这省去了针对各个元素,运行时的遍历,或是设计时的配置。 Interactable
void SetPanelPos(Transform parent) RectTransform parentRect = parent.GetComponent<RectTransform>(); _pivot.x = parent.position.x > 0 ? 1 : 0;
在一个面板中通过触发按钮操作弹出子面板后,点击原面板还会继续生成新的子面板,这时候需要能够让原面板暂停,也就是不响应,可以用到 Canvas Group 组件 Alpha这个选项很多 组件 都有,用处也是一样的,在美术中,这个叫做Alpha通道的东东是用来控制透明度的,他的值从0到1.0是完全透明,1是完全不透明; Interactable确认该 组件 是否接受输入,当他被设置为false时,交互功能将被禁用; Block Ray cas ts 是否让该 组件 像collider一样接受射线检测?你需要在依赖于 Canvas 的图形射
新建脚本(为了能实现拖拽脚本我们要拖拽的是slot脚本) 使用新的命名空间,UntiyEngine.Even tS ystems IBeginDragHandler,IDragHandler,IEndDragHandler q:拖拽的过程中会被其他的格子挡住 d:在Untiy中因为渲染的顺序,为了不被挡住,我希望他跟它的父级脱离管理,并放在grid的位置上 logic:脱离完父子关系之后,我希望放到格子里,如果没有东西放进去,如果有东西和格子里的东西互换位置,为了让物品有交换我们要... 首先创建一个buttonBig,它很大♂,我将它的image里面的颜色alpha调至一半,颜色稍红。添加 Canvas Group 组件 然后创建两个小的button。他们都是默认的样子。 之后调整大button,使大Button在小Button的上面。 然后以大Button为父对象,创建一些UGUI的其他物件,像sli...