Unity 学习教程 之 LayerMask 的位运算及应用

2025-11-09 05:42:35

1、Layer定义:

Unity是用 int32来表示32个Layer层,int32用二进制来表示一共有32位。

0000 0000 0000 0000 0000 0000 0000 0000

31                                                           0

2、Layer举例说明:

LayerMask mask = 1<<2;   //开启layer 2

其中 <<左边的 1表示有[开启],0表示没有该layer[忽略] 。右边的2表示左移2位即是 layer2层的位置。

1、打开Unity,新建一个空工程,具体如下图

Unity 学习教程 之 LayerMask 的位运算及应用

2、在场景中添加一个 Cube,并把他的 Layer 设置为 UI,具体如下图

Unity 学习教程 之 LayerMask 的位运算及应用

3、在工程中,新建一个脚本,命名为 Test,并右键脚本 Open  C# Project 打开,具体如下图

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

4、在打开的脚本上编写代码,具体代码和代码说明如下图

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

5、脚本的具体内容如下:

using UnityEngine;

public class Test : MonoBehaviour {

// Use this for initialization

void Start () {

    }

    //打开UI层,变1 或 运算符

    void Show() {

        Camera.main.cullingMask |= 1 << LayerMask.NameToLayer("UI");

    }

    //关闭UI层,变0 按位与 &  按位取反 ~

    void Hide() {

        Camera.main.cullingMask &= ~(1 << LayerMask.NameToLayer("UI"));

    }

    // 开关UI层,按位异或 ^

    void Toggle() {

        Camera.main.cullingMask ^= 1 << LayerMask.NameToLayer("UI");

    }

    private void OnGUI()

    {

        if (GUILayout.Button("Show")) {

            Show();

        }

        if (GUILayout.Button("Hide")) {

            Hide();

        }

        if (GUILayout.Button("Toggle")) {

            Toggle();

        }

    }

}

6、脚本编译正确,回到Unity界面,把脚本挂载到 Main Camera 上,具体如下图

Unity 学习教程 之 LayerMask 的位运算及应用

7、运行场景,开始 Cube 可见,按下 Hide 按钮,Cube消失,按下 Show 按钮,Cube出现,按下 Toggle,第一次 Cube 消失,第二次 Cube 出现,具体如下图

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

Unity 学习教程 之 LayerMask 的位运算及应用

8、到此,《Unity 学习教程 之 LayerMask 的位运算及应用》讲解结束,谢谢

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢