当前位置: 首页 > article >正文

【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中设置可碰撞层
打 √ 代表两个层之间是可以发生碰撞检测的
在这里插入图片描述


http://www.kler.cn/a/273776.html

相关文章:

  • Spring——自动装配
  • uniapp使用sm4加密
  • EtherCAT转Modbus网关与TwinCAT3的连接及配置详述
  • 【蓝桥杯选拔赛真题60】C++寻宝石 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • [Git] git cherry-pick
  • SQL Server中可以通过扩展事件来自动抓取阻塞
  • 玩转电商新趋势!淘宝商品评论电商API接口助你一臂之力
  • RPC学习笔记一
  • MySQL常用命令总结
  • 图论题目集一(代码 注解)
  • 使用rrweb悄悄录制用户操作过程
  • 蓝桥杯决赛2023 RE CyberChef2
  • 抖音视频爬虫工具安装|视频无水印批量下载软件
  • 递归算法c++
  • 什么是软件开发?软件开发阶段划分是什么?并以LabVIEW为例进行说明
  • 【小程序配置服务器域名】详细讲解
  • bs4模块
  • MyBatis3源码深度解析(十四)SqlSession的创建与执行(一)Configuration与SqlSession的创建过程
  • React的基本使用
  • 嵌入式学习40-数据结构
  • MindGraph:文字生成知识图
  • 电机学(笔记一)
  • UGUI界面性能优化3-合理规划界面层级结构
  • Machine Learning ---- Gradient Descent
  • 万界星空科技WMS仓储管理包含哪些具体内容?
  • Python如何去除网页中的隐藏元素