我的场景中有 81 个游戏对象。当我玩 3 批次时,统计数据很健康。但是当我在脚本中访问渲染器时,每个对象的批次计数都会增加。在我访问所有对象的渲染器后,情况变得很糟糕。
之前:批次:3 | 通过批处理保存:80 | FPS:近 400
之后:批次:83 | 通过批处理保存:0 | 帧数:约 200
代码: transform.GetComponent<Renderer>().material.color = Color32.Lerp(start_color, target_color,t);
我觉得这个问题很有道理。“为什么 Unity3D 没有在访问渲染器之前对对象进行批处理?为什么即使在我对游戏对象进行了工作之后,批处理计数仍然有效?”
更新: 1. 即使我只是简单地访问渲染器而不更改它,它也会花费一批并且永远不会减少。
start_color = transform.GetComponent<Renderer>().material.color;
我通过 lerp 改变颜色来缩放对象。在检查器中,材质被重命名为 mat(instance)。
我尝试使用 sharedMaterial。现在批次计数稳定为 3,但所有 81 个对象都变为相同的颜色。故事: 81 可以更新为具有不同灰度的低、中、高状态。我需要在更新时对它们进行分类。