我创建了一个简单的项目,其中约。在场景中创建了7000个立方体(使用VR摄像头),但问题是当我移动摄像头以查看所有立方体时,FPS变得非常糟糕,类似于5-6帧。我的PC是i7与GTX 1070,我认为它必须毫无问题地绘制数十万个立方体。真的,我看到了我的世界,看起来没有问题画立方体))
所以问题是,是否可以优化场景,以便所有立方体都被绘制成一个电话或其他东西,以提供良好的性能?
我实际上让所有立方体都是静态的,并且没有纹理只有标准材料...
我使用默认的Directional Light,最好不要更改标准着色器,因为它可以很好地处理光线。
以下是我如何生成多维数据集:
private void AddCube(Vector3 coords)
{
var particle = (Transform)MonoBehaviour.Instantiate(prototype.transform, holder.transform);
SetScale(particle);
SetPosition(particle, coords);
cubes.Add(particle.gameObject);
particle.gameObject.isStatic = true;
}
private void SetScale(Transform particle)
{
particle.localScale = new Vector3(Scale, Scale, Scale);
}
private void SetPosition(Transform particle, Vector3 coords)
{
particle.position = coords;
}
这是统计数据的屏幕截图: 我有41 fps,因为我将相机移离立方体,以便为统计面板提供干净的背景。实际上,在我制作了多维数据集“静态”之后FPS取决于屏幕上是否可见的立方体。
答案 0 :(得分:6)
问题很可能是由您实例化的单个对象的数量引起的。如果多维数据集在生成后没有改变它们的变换,你应该能够使用StaticBatchingUtility将它们组合成一个批处理。
生成多维数据集后调用此方法。
StaticBatchingUtility.Combine(GameObject cubesRoot);