unity中判斷渲染物體是否在攝像機內渲染,unity攝像機

來源:互聯網
上載者:User

unity中判斷渲染物體是否在攝像機內渲染,unity攝像機


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、最後也可以再寫一個函數來對脫離攝像機渲染的物體進行其它操作,比如為了對記憶體的考慮,對不需要用到的物體進行銷毀。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.