• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unity判定Layer是否在LayerMask

武飞扬头像
真鬼123
帮助1

原理: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。

示例代码

		 layerMask= Camera.main.cullingMask;

            if((layerMask.value & 1 << gameObject.layer) > 0 ){
                Debug.Log("在层中");
            }
            else{
                Debug.Log("不在层中");
            }

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibacie
系列文章
更多 icon
同类精品
更多 icon
继续加载