【Unity】层(Layer)详解

1.什么是Layer?

我们在做游戏开发的时候,尤其是场景比较复杂的时候,我们就需要使用Layer来分类。
比如:
排除不被灯光照亮的Layer
射线检测特定的 Layer
摄像机只能看到某些 Layer
对象之间的碰撞检测 Layer

2.添加Layer

①在Inspector面板中点击 Layer / Add Layer
在这里插入图片描述

②在编辑器菜单中,选择Edit / Project Settings / Tags and Layers
在这里插入图片描述

3.Layer的原理

Layer是一个int32数值, int32 是一个 32 位的二进制数,所以 Unity 的层也就设置了 32 个(0 ~ 31)。
先把int转成二进制数,每一位代表一个层(如下图),0代表该启用,1代表禁止,所以每个层对应的数值就是 2 的N 次方
比如 UI层排在第5位,那UI的层就是2的5次方=32
在这里插入图片描述

4.代码设置Layer

        //根据名称获取层级,返回UI的层级4
        int Layer_UI = LayerMask.NameToLayer("UI");
        //设置对象层级为UI
        gameObject.layer = Layer_UI;

5.Layer用法:射线检测指定层

简单举例几种Layer的代码使用方法

 
        // 指定第4层和第5层
        int layers = (1 << 4) | (1 << 5);
        // 忽略第4层
        //int ignoreLayers = ~(1 << 4);

        //射线检测layers层
        Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitdist;
        if (Physics.Raycast(mouseRay, out hitdist, 100, layers))
        {
    
    
           
        }

6.Layer用法:灯光照亮指定层

在场景中新建一个Cube,Layer设置为Npc
在场景中新建一个Capsule,Layer设置为Palyer
在这里插入图片描述
在场景中新建一个Directional Light
修改颜色为红色(方便测试)
修改Culling Mask为Player
在这里插入图片描述
结果如下,Capsule的Layer为Palyer,可以接受光照。
在这里插入图片描述

7.Layer用法:相机可见指定层

修改摄像机Culling Mask为Npc
在这里插入图片描述
结果如下,Cube的Layer为Npc,所以Game试图只能看见Cube
在这里插入图片描述

8.Layer用法:碰撞检测

碰撞检测需要Edit / Project Settings / Physics中设置可碰撞层
打 √ 代表两个层之间是可以发生碰撞检测的
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30144243/article/details/136832997
今日推荐