Unity3D中cullingMask属性作用解析

2.1.3 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;
        }
    }
}

在这段代码中,在OnGUI方法中定义了5个不同的Button来渲染不同层的物体。当然,在使用cullingMask来有选择性渲染物体之前,需要先对场景中的物体的层次进行设置。另外需要注意在渲染多个层时的代码写法,如代码中所示,在渲染第8层和第0层时,且勿将代码写成camera.cullingMask = 1 << 8+1或camera.cullingMask = 1+1<<8的形式。具体的渲染情况请读者自行运行程序查看。


本文章内容摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值