cullingMask属性:摄像机按层渲染

基本语法:public intcullingMask { get; set; }

功能说明:此属性用于按层(即GameObject.layer)有选择性的渲染场景中的物体。通过cullingMask可以使得当前摄像机有选择性的渲染场景中的部分物体,默认cullingMask=-1即渲染场景中任何层物体,当cullingMask=0时不渲染场景中任何层,若只渲染分别位于2、3、4层的物体则可以使用代码cullingMask=(1<<2)+(1<<3)+ (1<<4)来实现。

实例演示:下面通过实例演示属性cullingMask的使用。

[csharp] view plaincopyprint?
  1. using UnityEngine;
  2. using System.Collections;
  3. public class CullingMask_ts : MonoBehaviour
  4. {
  5. void OnGUI()
  6. {
  7. //默认CullingMask=-1,即渲染任何层
  8. if (GUI.Button(new Rect(10.0f, 10.0f, 200.0f, 45.0f), "CullingMask=-1"))
  9. {
  10. camera.cullingMask = -1;
  11. }
  12. //不渲染任何层
  13. if (GUI.Button(new Rect(10.0f, 60.0f, 200.0f, 45.0f), "CullingMask=0"))
  14. {
  15. camera.cullingMask = 0;
  16. }
  17. //仅渲染第0层
  18. if (GUI.Button(new Rect(10.0f, 110.0f, 200.0f, 45.0f), "CullingMask=1<<0"))
  19. {
  20. camera.cullingMask = 1 << 0;
  21. }
  22. //仅渲染第8层
  23. if (GUI.Button(new Rect(10.0f, 160.0f, 200.0f, 45.0f), "CullingMask=1<<8"))
  24. {
  25. camera.cullingMask = 1 << 8;
  26. }
  27. //渲染第8层与第0层
  28. if (GUI.Button(new Rect(10.0f, 210.0f, 200.0f, 45.0f), "CullingMask=0&&8"))
  29. {
  30. //注:不可大意写成camera.cullingMask = 1 << 8+1;或
  31. //camera.cullingMask = 1+1<<8 ;因为根据运算符优先次序其分别等价于
  32. //camera.cullingMask = 1 << (8+1)和camera.cullingMask = (1+1)<<8
  33. camera.cullingMask = (1 << 8) + 1;
  34. }
  35. }
  36. }
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层.

  1. 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相关推荐

  1. Unity Layer预设 默认设置Layer

    直接看代码,编译后通过改写 ProjectSetting/tagmanager 实现预设Layer效果,并且可以扩展更多关于Layer的功能 using System; using System.Co ...

  2. Tiled结合Unity实现瓦片地图

    前段时间应公司需求做瓦片地图,cocos与瓦片地图的结合案例很多,但unity的却少之又少,做瓦片地图少不了Tiled Map Editor(下载地址),这个教程很多,也自带例子,关于怎么拼地图,这里 ...

  3. Tiled结合Unity实现瓦片地图——Unity实战篇

    本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. http://blog.csdn.net/lzhq1982/article/details/75425915 上文说道,Ti ...

  4. Unity中的layer和tag

    Unity中的layer和tag layer和tag均用于标识不同类别的gameobject,侧重点不同 Layer Unity中默认已经有8种layer,但可以自行设置layer,上限32种,对应于 ...

  5. Unity相机设置CullingMask

    unity中layers有固定32个,设置CullingMask可以理解成赋值一个32长度的二进制数字,0是关1是开. 全部关闭:0(全部都是0所以全部都是关闭的,000000--0000) 全部开启 ...

  6. 【Unity学习笔记】标签(Tag)和层(Layer)

    声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨.可作参考,但不保证绝对正确.如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦. 此篇文章是根据官网手册总结:https://docs.u ...

  7. Unity代码添加设置Tag或Layer

    Unity代码设置Tag或Layer 描述 代码 注意 描述 Unity中设置Tag和Layer的方法,大家都知道,步骤较为繁琐.有时将一些代码复用到其他项目时,经常会出现Tag或Layer,不存在或 ...

  8. Unity 获取到Camera的cullingMask,包含多个选择

    代码部分.注:不包含Everything和Nothing Layer层级由int转stringstring aa = LayerMask.LayerToName(); using System.Col ...

  9. 自用备份Unity Camera 相机 CullingMask代码动态控制

    using System.Collections; using System.Collections.Generic; using UnityEngine;public class CameraCul ...

最新文章

  1. 自动驾驶汽车事故的罪责追究
  2. 一周焦点 | 最强AI芯片麒麟980发布;前端开发者将被取代?
  3. 计算机网络教室课程安排表,关于计算机教学计划汇总六篇
  4. SAP Cloud for Customer销售订单Account字段的实现逻辑
  5. 一些SAP Partners能够通过二次开发实现打通 SAP C/4HANA和S/4HANA 的场景分享
  6. DAVINCI DM365-368中 linux-2.6.32的移植
  7. Flex读取xml文件
  8. JAVA IO系列----ObjectInputStream和ObjectOutputStream类
  9. android通知栏如何添加按钮,如何在通知栏上放置媒体控制器按钮?
  10. 【无人机】物流行业迈入“无人”时代!全自动智能无人机投入运营,成本直降80%!...
  11. java继承的作用_Java继承概述以及Java继承案例和继承的好处
  12. LeetCode(806)——写字符串需要的行数(JavaScript)
  13. 30岁,没有月入过万算失败吗?用可视化分析30岁的人收入真相
  14. linux mysql5.7 实例初始化_mysql 5.7多实例单配置文件安装
  15. 深交所再推跨市场ETF交易模式创新,助力ETF发展
  16. python通过文件头识别音频格式
  17. bochs模拟器创建映像文件 、写入文件并启动
  18. キュリオ / 库利欧
  19. 凸优化理论基础2——凸集和锥
  20. 并查集及其优化(南昌理工学院ACM集训队)

热门文章

  1. WAF防火墙是什么呢
  2. 国瀚实业|春节投资,这些理财的坑要注意
  3. epub文件是什么文件?如何在windows系统上打开?
  4. Couldn‘t resolve host
  5. 码云Gitee WebHook Jenkins 403 err:No valid crumb was included in the request
  6. 《那些年啊,那些事——一个程序员的奋斗史》——17
  7. Cordova App 热更新 超详细教程
  8. elementui级联选择器空children导致选择无法显示的问题
  9. 【机器学习】强化学习算法的优化
  10. 项目需求--将文件(html格式的字符串)转换为MultipartFile格式的文件然后转调第三方接口