首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一在运行时生成许多对象,运行速度较慢。

统一在运行时生成许多对象,运行速度较慢。
EN

Stack Overflow用户
提问于 2017-02-15 10:32:29
回答 1查看 2.3K关注 0票数 6

我创建了一个简单的项目。在场景中创建了7000个立方体(用虚拟现实相机),但问题是当我移动相机看到所有立方体时,FPS变得非常糟糕,类似于5-6帧。我的PC是i7与GTX 1070,我认为它必须绘制十万立方体没有任何问题。真的,我看过“我的经验之谈”,看上去没有问题要画方块))

那么问题是,是否有可能优化场景,使所有的多维数据集都被绘制成一个调用,或者提供一个良好的性能?

实际上,我所有的立方体都是静态的,没有纹理,只有标准材料.

现在的情况如下:

我是使用默认的方向光,这将是好的不改变标准着色器,因为它伟大的工作与光。

下面是我生成立方体的方法:

代码语言:javascript
复制
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;
}

这是Stats的截图:

我这里有41个fps,因为我把相机从立方体移开,以便为统计面板提供干净的背景。实际上,在我使立方体“静态”之后,FPS所依赖的是屏幕上是否可见的多维数据集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 14:38:51

这个问题很可能是由您正在实例化的单个对象的数量造成的。如果多维数据集在生成后不改变它们的转换,那么您应该能够使用StaticBatchingUtility将它们组合成一个批。

在生成多维数据集之后调用它。

代码语言:javascript
复制
StaticBatchingUtility.Combine(GameObject cubesRoot);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42246828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档