Unity使用二进制运算物体的layer

unity中 一共有32个layer位置 用一个int表示,int占32个字节,每层layer占int的一个字节,

一个初始的int在二进制中是:

00000000000000000000000000000000

如果打开第一层layer :

00000000000000000000000000000010

打开第零层和第十层layer:

00000000000000000000100000000001

Unity中通过逻辑运算符计算layer很方便 具体做法是:

string[] layerNames=new streing[]{"UI","Player","Enemy"};
int layers=LayerMask.GetMask(layerNames);
if(((1 << target.gameObject.layer) & layers) !=0)
{
	Debug.Log("包含在层级内");
}else{
	Debug.Log("不包含在层级内");
}

注意:

Inspector面板上layer前的序号只表示该layer在int的第几位,不代表实际的int值

public static int GetMask(params string[] layerNames);

返回的是包含这个string数组的所有层级的int值 是layer实际的值


gameObject.layer

获取到的是物体的layer在int的第几位,不代表实际的int值,如果需要对比,请在前面加上1<<计算出实际的layer int值

1<<gameObject.layer

你可能感兴趣的:(Unity使用二进制运算物体的layer)