码迷,mamicode.com
首页 > 编程语言 > 详细

unity中判断渲染物体是否在摄像机内渲染

时间:2015-05-08 16:31:36      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:unity   c#   onwillrenderobject   


1、先声明我们的变量:

<span style="font-size:14px;">/// <summary>
    /// isRender 为true则表示在摄像机内,为false则相反
    /// </summary>
    private bool isRender;
    private float lastTime;
    private float currentTime;
    /// <summary>
    /// controlUpdate 控制update内isRender为false时的开关
    /// </summary>
    private bool controlUpdate;</span>

2、写一个方法对这些变量进行初始化:

<span style="font-size:14px;">void Init()
    {
        controlUpdate = false;
        isRender = true;
        lastTime = 0;
        currentTime = 0;
    }</span>
并在Start()函数中调用

3、在OnWillRenderObject()函数中对currentTime进行赋值:

void OnWillRenderObject()
    {
        if (Camera.current.name == Camera.main.name)//是需要渲染的摄像机
        {
            currentTime = Time.time;
        }
    }

  点击  查看文档可对OnWillRenderObject() 做进一步了解

4、最后在Update函数中对lastTime赋值并对isRender进行判断:

void Update()
    {
        if (!controlUpdate && currentTime != 0)
        {
            isRender = currentTime != lastTime ? true : false;
            lastTime = currentTime;
            if (!isRender)
            {
                controlUpdate = true;
                //TODO:
            }
        }
        
    }
5、最后也可以再写一个函数来对脱离摄像机渲染的物体进行其它操作,比如为了对内存的考虑,对不需要用到的物体进行销毁。


unity中判断渲染物体是否在摄像机内渲染

标签:unity   c#   onwillrenderobject   

原文地址:http://blog.csdn.net/u014076894/article/details/45581541

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!