组里需求
需要做一个按钮用来开启和关闭不同层的渲染,这是一个简单的问题,但是实现起来稍微繁琐。
实现一个layermask的切换状态,你可能会做
- 你需要读取当前的某个层的状态
- 将该层的状态设置为相反的状态
因为layermask设计为二进制保存,而API并没有给你直接的读取一个层的开启状态的函数,这个过程会变得很折磨。
我实现了一种新写法,直接对layermask上指定层的bit,做bit反转。
简而言之,你不需要知道这个层的当前状态,你就直接让他进入反状态就好了。
而且它只有两行,非常简洁。
我搜索了一下,没有找到有人这样写,所以我觉得有一些先进性,所以发出来。
//输入layer,即可切换layer的开关状态
public void SwitchCameraCullinglayer(int layerIndex)
{
int i = 1 << layerIndex;//位移动
Camera.main.cullingMask = Camera.main.cullingMask ^ i;//二进制异或运算
}