Unity中是用int32来表示32个Layer层。int32表示二进制一共有32位(0—31)。LayerMask实际上是用Int32的32个位来表示每个层级,当这个位为1时表示使用这个层,为0时表示不用这个层。
代码释义:
LayerMask mask = 1 << 你需要开启的Layers层。
LayerMask mask = 0 << 你需要关闭的Layers层。 等价于 LayerMask mask = ~( 1 << 你需要关闭的Layers层。)
public static int OnlyIncluding(params int[] layers)
{
return MakeMask(layers);
}
public static int EverythingBut(params int[] layers)
{
return ~MakeMask(layers);
}
static int MakeMask(params int[] layers)
{
int mask = 0;
for (int i = 0; i < layers.Length; i++)
{
mask |= 1 &l