最近做航母飞机的预瞄,用的World Space的Canvas绘制在3d空间,但是不响应触摸事件,Canvas的Sort Order设置无效,事件永远被Screen Space Camera的Canvas截获,之前的UGUI版本GraphicRaycaster脚本有显示的sort order设置,现在也没有了。
去bitbucket看了EventSystem源码发现比较顺序为
1.GraphicRaycaster不同
1) 都有event camera 先比较camera 的 depth
2) 比较GraphicRaycaster 的 sortOrderPriority
3) 比较GraphicRaycaster 的 renderOrderPriority
2.GraphicRaycaster相同
1) 比较Canvas 的 sortingLayer
2) 比较Canvas 的 sortingOrder
3) 比较控件的depth
4) 比较与摄像机的distance,overlay为0
World Space Canvas 的 eventCamera 是MainCamera,他的
depth一定是要小于UICamera的,基本没救了啊,只能把UI Canvas设置为Overlay来解决了,再做一个GraphicRaycaster子类设置sortOrderPriority来解决。
找个时间通读一遍UGUI的源码,画下类图。
–EOF–