Unity中Camera参数—Culling Mask详解

参考原文地址:https://blog.csdn.net/qq_35241071/article/details/125001213

------------------------------------------------------------------------------------------------------

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”));
同理如上······操作跟上面一样!

posted @ 2022-06-29 15:31  lovewaits  阅读(136)  评论(0编辑  收藏  举报