-
Notifications
You must be signed in to change notification settings - Fork 58
Description
当鼠标点击修改器的canvas界面时,有时会出现在canvas后面的物体也接收到鼠标点击信号的问题,这个问题如果修改,应该需要修改在UnityGameUI中的东西。
解决思路:
之前觉得可能是Canvas.sortingOrder的问题,但是应该不是这个问题。
Unity中,canvas本身并不被认为是"Raycast Target",即例如鼠标点击的Raycast事件并不会被Canvas本身所“拦截”,而是会继续穿过该UI元素“往后”继续传导。UI中真实对射线进行“拦截”的是被Raycaster认为是"Raycast Target"的对象,射线检测在通过该类型的物体后才会被“阻止”,否则会继续传播。
可以拥有"Raycast Target"属性的东西例如“图片”、“按钮”等UI元素,而非Canvas本身,因此在修改器的UI上,进行例如按住空白处上下滑动的事情的时候,便会导致按到UI后面的游戏物体的事情。
解决方案:
可能在CreatePanel createUIPanel这些func里面进行修改,创建该Image的时候设置其属性raycastTarget为true
但是由于Unity版本问题和UI这个包的版本问题,可能具体设置方式会有所不同
相关文档和链接:
1.Canvas.sortingOrder 可能和这个问题没有关系
https://docs.unity3d.com/ScriptReference/Canvas-sortingOrder.html
2.Unity中的Raycaster
https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/Raycasters.html
3.Canvas
https://docs.unity3d.com/2022.3/Documentation/ScriptReference/Canvas.html
4.Image
https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-Image.html