unity Layer CullingMask
cullingMask属性:摄像机按层渲染
基本语法:public intcullingMask { get; set; }
功能说明:此属性用于按层(即GameObject.layer)有选择性的渲染场景中的物体。通过cullingMask可以使得当前摄像机有选择性的渲染场景中的部分物体,默认cullingMask=-1即渲染场景中任何层物体,当cullingMask=0时不渲染场景中任何层,若只渲染分别位于2、3、4层的物体则可以使用代码cullingMask=(1<<2)+(1<<3)+ (1<<4)来实现。
实例演示:下面通过实例演示属性cullingMask的使用。
- using UnityEngine;
- using System.Collections;
- public class CullingMask_ts : MonoBehaviour
- {
- void OnGUI()
- {
- //默认CullingMask=-1,即渲染任何层
- if (GUI.Button(new Rect(10.0f, 10.0f, 200.0f, 45.0f), "CullingMask=-1"))
- {
- camera.cullingMask = -1;
- }
- //不渲染任何层
- if (GUI.Button(new Rect(10.0f, 60.0f, 200.0f, 45.0f), "CullingMask=0"))
- {
- camera.cullingMask = 0;
- }
- //仅渲染第0层
- if (GUI.Button(new Rect(10.0f, 110.0f, 200.0f, 45.0f), "CullingMask=1<<0"))
- {
- camera.cullingMask = 1 << 0;
- }
- //仅渲染第8层
- if (GUI.Button(new Rect(10.0f, 160.0f, 200.0f, 45.0f), "CullingMask=1<<8"))
- {
- camera.cullingMask = 1 << 8;
- }
- //渲染第8层与第0层
- if (GUI.Button(new Rect(10.0f, 210.0f, 200.0f, 45.0f), "CullingMask=0&&8"))
- {
- //注:不可大意写成camera.cullingMask = 1 << 8+1;或
- //camera.cullingMask = 1+1<<8 ;因为根据运算符优先次序其分别等价于
- //camera.cullingMask = 1 << (8+1)和camera.cullingMask = (1+1)<<8
- camera.cullingMask = (1 << 8) + 1;
- }
- }
- }
using UnityEngine;
using System.Collections;public class CullingMask_ts : MonoBehaviour
{void OnGUI(){//默认CullingMask=-1,即渲染任何层if (GUI.Button(new Rect(10.0f, 10.0f, 200.0f, 45.0f), "CullingMask=-1")){camera.cullingMask = -1;}//不渲染任何层if (GUI.Button(new Rect(10.0f, 60.0f, 200.0f, 45.0f), "CullingMask=0")){camera.cullingMask = 0;}//仅渲染第0层if (GUI.Button(new Rect(10.0f, 110.0f, 200.0f, 45.0f), "CullingMask=1<<0")){camera.cullingMask = 1 << 0;}//仅渲染第8层if (GUI.Button(new Rect(10.0f, 160.0f, 200.0f, 45.0f), "CullingMask=1<<8")){camera.cullingMask = 1 << 8;}//渲染第8层与第0层if (GUI.Button(new Rect(10.0f, 210.0f, 200.0f, 45.0f), "CullingMask=0&&8")){//注:不可大意写成camera.cullingMask = 1 << 8+1;或//camera.cullingMask = 1+1<<8 ;因为根据运算符优先次序其分别等价于//camera.cullingMask = 1 << (8+1)和camera.cullingMask = (1+1)<<8camera.cullingMask = (1 << 8) + 1;}}
}
在这段代码中,在OnGUI方法中定义了5个不同的Button来渲染不同层的物体。当然,在使用cullingMask来有选择性渲染物体之前,需要先对场景中的物体的层次进行设置。另外需要注意在渲染多个层时的代码写法,如代码中所示,在渲染第8层和第0层时,且勿将代码写成camera.cullingMask = 1 << 8+1或camera.cullingMask = 1+1<<8的形式。具体的渲染情况请读者自行运行程序查看。
camera.cullingMask = ~(1 << x); // 渲染除去层x的所有层
camera.cullingMask &= ~(1 << x); // 关闭层x
camera.cullingMask |= (1 << x); // 打开层x
camera.cullingMask = 1 << x + 1 << y + 1 << z; // 摄像机只显示第x层,y层,z层.
camera.cullingMask = ~(1 << x); // 渲染除去层x的所有层 camera.cullingMask &= ~(1 << x); // 关闭层x camera.cullingMask |= (1 << x); // 打开层x camera.cullingMask = 1 << x + 1 << y + 1 << z; // 摄像机只显示第x层,y层,z层.
unity Layer CullingMask相关推荐
- Unity Layer预设 默认设置Layer
直接看代码,编译后通过改写 ProjectSetting/tagmanager 实现预设Layer效果,并且可以扩展更多关于Layer的功能 using System; using System.Co ...
- Tiled结合Unity实现瓦片地图
前段时间应公司需求做瓦片地图,cocos与瓦片地图的结合案例很多,但unity的却少之又少,做瓦片地图少不了Tiled Map Editor(下载地址),这个教程很多,也自带例子,关于怎么拼地图,这里 ...
- Tiled结合Unity实现瓦片地图——Unity实战篇
本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. http://blog.csdn.net/lzhq1982/article/details/75425915 上文说道,Ti ...
- Unity中的layer和tag
Unity中的layer和tag layer和tag均用于标识不同类别的gameobject,侧重点不同 Layer Unity中默认已经有8种layer,但可以自行设置layer,上限32种,对应于 ...
- Unity相机设置CullingMask
unity中layers有固定32个,设置CullingMask可以理解成赋值一个32长度的二进制数字,0是关1是开. 全部关闭:0(全部都是0所以全部都是关闭的,000000--0000) 全部开启 ...
- 【Unity学习笔记】标签(Tag)和层(Layer)
声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨.可作参考,但不保证绝对正确.如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦. 此篇文章是根据官网手册总结:https://docs.u ...
- Unity代码添加设置Tag或Layer
Unity代码设置Tag或Layer 描述 代码 注意 描述 Unity中设置Tag和Layer的方法,大家都知道,步骤较为繁琐.有时将一些代码复用到其他项目时,经常会出现Tag或Layer,不存在或 ...
- Unity 获取到Camera的cullingMask,包含多个选择
代码部分.注:不包含Everything和Nothing Layer层级由int转stringstring aa = LayerMask.LayerToName(); using System.Col ...
- 自用备份Unity Camera 相机 CullingMask代码动态控制
using System.Collections; using System.Collections.Generic; using UnityEngine;public class CameraCul ...
最新文章
- 自动驾驶汽车事故的罪责追究
- 一周焦点 | 最强AI芯片麒麟980发布;前端开发者将被取代?
- 计算机网络教室课程安排表,关于计算机教学计划汇总六篇
- SAP Cloud for Customer销售订单Account字段的实现逻辑
- 一些SAP Partners能够通过二次开发实现打通 SAP C/4HANA和S/4HANA 的场景分享
- DAVINCI DM365-368中 linux-2.6.32的移植
- Flex读取xml文件
- JAVA IO系列----ObjectInputStream和ObjectOutputStream类
- android通知栏如何添加按钮,如何在通知栏上放置媒体控制器按钮?
- 【无人机】物流行业迈入“无人”时代!全自动智能无人机投入运营,成本直降80%!...
- java继承的作用_Java继承概述以及Java继承案例和继承的好处
- LeetCode(806)——写字符串需要的行数(JavaScript)
- 30岁,没有月入过万算失败吗?用可视化分析30岁的人收入真相
- linux mysql5.7 实例初始化_mysql 5.7多实例单配置文件安装
- 深交所再推跨市场ETF交易模式创新,助力ETF发展
- python通过文件头识别音频格式
- bochs模拟器创建映像文件 、写入文件并启动
- キュリオ / 库利欧
- 凸优化理论基础2——凸集和锥
- 并查集及其优化(南昌理工学院ACM集训队)
热门文章
- WAF防火墙是什么呢
- 国瀚实业|春节投资,这些理财的坑要注意
- epub文件是什么文件?如何在windows系统上打开?
- Couldn‘t resolve host
- 码云Gitee WebHook Jenkins 403 err:No valid crumb was included in the request
- 《那些年啊,那些事——一个程序员的奋斗史》——17
- Cordova App 热更新 超详细教程
- elementui级联选择器空children导致选择无法显示的问题
- 【机器学习】强化学习算法的优化
- 项目需求--将文件(html格式的字符串)转换为MultipartFile格式的文件然后转调第三方接口