- 项目配置好了两个组:default(0),ui(1)。
- Canvas节点在default组,其下有两个Camera:Main Camera设置好cullingMask仅渲染default组,UI Camera仅渲染ui组。
- Canvas下各节点所在组如下:
- Canvas/A:ui
- Canvas/A/a:default
- Canvas/B:default
- Canvas/B/b:ui
- 渲染结果:
- Main Camera渲染了Canvas/B及其子层级
- UI Camera渲染了Canvas/A及其子层级
- 疑惑:
- Canvas/B/b明明在ui组,确被Main Camera渲染了
- Canvas/A/a明明在default组,却被UI Camera渲染了
- 结论:
- 若某节点为Canvas的直接孩子,则该节点的组设置会决定其所有子层级的渲染相机。
以上结论对否,请官方给个评判。
版本:2.0.1
补充
进一步实验,及查阅源码得出以下结论:
- 渲染时,处于default组的节点会采纳距它最近的非default组祖先的cullingMask,即这个祖先会和那个节点用同一相机渲染。
- 这样的设计确实大有好处,即当你有大量节点需要分配到非default组渲染,只要将他们放在配置了那个组的父节点下即可,不用一个一个设置组了。
- 但这个结论可能仅适用于渲染,碰撞大概就不适合了。