【发布时间】:2014-09-01 19:50:16
【问题描述】:
为什么下面的脚本会使 Unity 运行非常缓慢且无法使用?
public Transform brick;
public int gridWidth=10;
public int gridDepth=10;
public int gridHeight=10;
void Start() {
for (int y = 0; y < gridHeight; y=y+2)
{
for (int z = 0; z < gridDepth; z=z+2)
{
for (int x = 0; x < gridWidth; x=x+2)
{
Instantiate (brick, new Vector3 (x, y, z), Quaternion.identity);
}
}
}
}
在变换中,我放置了一个基本上是刚体立方体的预制件。
如果我删除包含 z int 的 For-Loop,它运行正常(因此 10x10 网格 / 100 个立方体就可以了)。但是,在 z int 循环到位后,它会中断(10x10x10 网格/1000 个立方体)
我怎样才能在不使 Unity 无法使用的情况下使其真正有效地工作?
【问题讨论】:
-
实例化 1000 个游戏对象会显着减慢速度,问题是它只慢了一秒钟(实例化)还是之后的任何时间? (渲染太多)
-
一直慢。我注意到我没有重新编译我的代码,尽管这在 Unity 中意味着 100x100x100 网格卡住了,但是,在重新编译 10x10x10 网格之后工作正常。 50x50x50 一开始很慢,但之后就好了....75x75x75 让一切都停止了。在 75x75x75 时,我关闭了渲染,但它仍然很慢......所以假设它可能是别的东西,但也就是说,75x75x75 是 400,000 多个对象,所以我想它会很慢!
-
请记住,它在您的特定系统上运行得好或坏,这可能比其他用户运行您的游戏的(最低要求)系统快得多/慢得多。