原理:LayerMask和Layer的说明
Layer一共有32层,是因为使用了int32表示:0000 0000 0000 0000 0000 0000 0000 0000
LayerMask勾选了第几个层级,就将右向左数的第n位的0改为1。
举例:LayerMask勾选了层级1、层级4和层级6:0000 0000 0000 0000 0000 0000 0011 0010
获取GameObject上的layer时,得到的是层级的标号,层级1对应着数字1。
所以使用Layer给LayerMask赋值或计算时,应使用: (1 << layer)。 得到LayerMask类型的数据。
因此我们判断LayerMask中是否有Layer,只需要判断LayerMask的数据中,对应位置上,是否是1即可。
如:0000 0000 0000 0000 0000 0000 0011 0010,中第2位,第5位,第6位是1, 表示包含层级1、层级4和层级6。文章来源:https://www.toymoban.com/news/detail-607463.html
示例代码
layerMask= Camera.main.cullingMask;
if((layerMask.value & 1 << gameObject.layer) > 0 ){
Debug.Log("在层中");
}
else{
Debug.Log("不在层中");
}
文章来源地址https://www.toymoban.com/news/detail-607463.html
到了这里,关于【Unity】判定Layer是否在LayerMask中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!