我的場景中有81個遊戲對象。當我參加三場比賽時,狀態很健康。但是當我訪問腳本中的渲染器時,批處理會爲每個對象計數增加。在我訪問所有對象的渲染器後,情況變得很糟糕。爲什麼訪問渲染器時批量會增加?
之前:批次:3 |通過配料保存:80 | FPS:近400個
後:批次:83 |通過配料保存:0 | FPS:約200
代碼:transform.GetComponent<Renderer>().material.color = Color32.Lerp(start_color, target_color,t);
我覺得這個問題是有道理的。 「爲什麼Unity3D在渲染器被訪問之前沒有花費一個批次的對象?即使在我完成了遊戲對象的工作之後,爲什麼批量計數仍然有效?」
更新: 1.即使我簡單地訪問渲染而不改變它,它的成本一批永不它就會遞減。
start_color = transform.GetComponent<Renderer>().material.color;
我通過線性插值改變顏色縮放的對象。在檢查器中,材質被重命名爲mat(實例)。
我試過使用sharedMaterial。現在批量計數穩定爲3,但所有81個對象都變爲相同的顏色。 故事:81可以更新爲灰度不同的低,中,高三種狀態。我需要將他們分組,當更新時。
我需要我的對象來保持三種狀態之間的更新。是否可以將要在三個共享材料之間使用的對象分組以實現批量計數3? –
@DistractionArrestor你可以試試這個技巧:創建三個材質(用於你的狀態)並在必要時切換它們。 –