1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等。将不同类的物体划分到不同的层,便于相机拣选,在相机的cullmask中可以选择渲染哪些层,不选择的层则不会渲染。还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测。

U3D sorting layer, sort order, order in layer, layer深入辨析

2,canvas默认是屏幕空间的2D对象,在屏幕空间时仅具有sort order属性,当把它设置为世界空间时,sort order属性消失了,变成另外两个属性: sorting layer, order in layer。

当把画布设置为worldspace后,画布及画布上的UI对象在世界空间默认也是靠Z值来决定渲染顺序的,离相机远的先渲染。当设置了sorting layer后,渲染的次序就由sorting layer来确定了。sorting layer是自定义的标识符,哪个sortinglayer在前(在layer & tags中设置的先后顺序)哪个先渲染。

order in layer是个数值,是在同一个sorting layer内的细分,sorting layer相同时order in layer的数值越小越先渲染。

屏幕空间的东西都处于UI层不需要sorting layer,只提供sort order(其实也就是order in layer)。 默认情况下sort oder都是0,此时UI物件按照在hierachy中出现的顺序决定渲染顺序。如果sort order不同时,值越小越先渲染。

3,特别注意sprite默认是个3D空间的物体,就算把它放到一个屏幕空间的canvas上,它仍然是3D空间的物体,只遵循3D空间的规则:总是会被UI挡住。

 4,同时具有sorting layer, order in layer的对象:sprite, 世界空间的canvas,说明这两种GO是可以相互遮挡的。

比如挂在世界空间画布上的角色名字和用sprite实现的遮罩,通过调整sorting layer及order in layer就可以实现两者之间的先后

仅具有sort order的对象:屏幕空间的canvas

只具有sorting layer的对象:不存在

只具有order in layer 的对象:不存在

没有sorting order这个东西!

U3D sorting layer, sort order, order in layer, layer深入辨析

 U3D sorting layer, sort order, order in layer, layer深入辨析

U3D sorting layer, sort order, order in layer, layer深入辨析

相关文章:

  • 2021-11-20
  • 2021-08-29
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
  • 2022-12-23
  • 2021-12-04
猜你喜欢
  • 2021-09-17
  • 2021-05-15
  • 2022-01-11
  • 2022-12-23
  • 2021-08-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案