您的位置:首页 > 移动开发 > Unity3D

Unity3D中cullingMask属性作用解析

2014-09-18 22:43 453 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: