Unity有32个layer,每个layer对应的是一个32位的二进制标识符,比如:
这个层用二进制表示为:0000 0000 0000 0000 0000 0000 0010 0000
开启layer n
LayerMask mask = 1 << n
其中1表示开启,右值代表layer编号
忽略layer n
LayerMask mask = 0 << n
其中0表示关闭,右值代表layer编号
开启Layer UI
LayerMask mask = 1 << LayerMask.NameToLayer("UI")
项目中应用:
1、物理碰撞
Physics.Linecast(startpoint,endpoint,_hitInfo,(1<<5))
2、相机剔除
//相机只保留UI层
camera.cullingMask &= ~(1 << LayerMask.NameToLayer("UI"));