Culling Mask
如下图所示:
显示层级如下:
应用:
Culling Mask :主要是相机针对不同层级的物体进行渲染的操作(想让相机渲染哪个层就勾选哪个层)
层级介绍:
unity中的层前7个被unity锁定,由低到高分别是nothing/everything/default/transparentFX/ignore raycast/water/UI
从第8个到第31个可以自己设置进行起名字添加或删减的
功能 :
我们可以通过脚本对相机层级进行控制,然后进行针对显示(可以用做多个物体的自由选择显示等)
脚本方面:
说明:层级索引是int类型的,我们可以通过int32对layer层级进行访问和调用
**
具体脚本如下:
1.用于只渲染某一层
_camera.cullingMask = 1<<8; //cube 只渲染第八层
_camera.cullingMask = 1<<9; //sphere 只渲染第九层
_camera.cullingMask = 1<<10; //capsule 只渲染第十层
只渲染第8、9、10层
_camera.cullingMask = (1 << 10) + (1<<9) +(1<<8);
2.渲染所有层
_camera.cullingMask = -1; //对应 everything
3.任何层都不渲染
_camera.cullingMask = 0; //对应 nothing
4.在原来基础添加某一层
_camera.cullingMask |= (1 << 10); //在原来的基础上增加第10层
5.在原来基础减去某一层
_camera.cullingMask &= ~(1 << 10); //在原来的基础上减掉第10层
6.渲染除了某一层外的所有层
_camera.cullingMask = ~(1 << 10); //渲染除第10层之外的其他所有层
**
代码注意事项:
**camera.cullingMask = 1 << 0+1 << 9; 错误的
camera.cullingMask = (1 << 0)+(1 << 9);正确的
**注:**一定记得加括号,否则无效果
延伸:可以通过层名去打开对应的层:
camera.cullingMask = (1 << 0) + (1 << LayerMask.NameToLayer(“T”));
同理如上······操作跟上面一样!
参考:
Unity中Camera参数—Culling Mask详解