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