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

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraCullingMaskTest : MonoBehaviour {
    Camera _camera;
    // Use this for initialization
    void Start ()
    {
        _camera = Camera.main;
    }
    //unity中的层前7个被unity锁定,由低到高分别是nothing/everything/default/transparentFX/ignore raycast/water/UI
    //从第8个到第31个可以自己设置
    //在本示例中,第八层为cube层;第九层为sphere层;第十层为capsule层
    //第十一层为tree层,圆柱体设置为default层
    void Update ()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            _camera.cullingMask = 1<<8; //cube 只渲染第八层
        }
        if (Input.GetKeyDown(KeyCode.B))
        {
            _camera.cullingMask = 1<<9; //sphere 只渲染第九层
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            _camera.cullingMask = 1<<10; //capsule  只渲染第十层
        }
        if (Input.GetKeyDown(KeyCode.F))
        {
            _camera.cullingMask = (1 << 10) + (1<<9) +(1<<8); //只渲染第8、9、10层
        }
        if (Input.GetKeyDown(KeyCode.G))
        {
            _camera.cullingMask = -1; //渲染所有层  everything
        }
        if (Input.GetKeyDown(KeyCode.H))
        {
            _camera.cullingMask = 0; //capsule  什么层都不渲染 nothing
        }
        if (Input.GetKeyDown(KeyCode.T))
        {
            _camera.cullingMask |= (1 << 11); //tree  在原来的基础上增加第11层
        }
        if (Input.GetKeyDown(KeyCode.Y))
        {
            _camera.cullingMask &= ~(1 << 11); //tree   在原来的基础上减掉第11层  
        }
        if (Input.GetKeyDown(KeyCode.K))
        {
            _camera.cullingMask = ~(1 << 11); //tree  渲染除第11层之外的其他所有层
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值