Unity冻结运行,循环实例化

时间:2015-01-11 12:33:47

标签: c# unity3d instantiation freeze

我正在尝试用立方体生成一个平坦的世界,我有几个嵌套的for循环来遍历坐标并放置每个块。当我运行应用程序时,统一游戏引擎会冻结。从我所知道的循环是正确的应该工作并正确退出。我原本以为也许我试图实例化太多的对象,所以我大大减少了数量,但我仍然遇到同样的问题。我一直在盯着这段代码一段时间而找不到问题,所以我想知道是否有人知道这个问题是什么?

using UnityEngine;
using System.Collections;

public class Chunk : MonoBehaviour {

public readonly int chunkWidth = 2;
public readonly int chunkHeight = 2;
public GameObject TestBlock;

// Use this for initialization
void Start () {
    spawnChunk (0,0);
}

// Update is called once per frame
void Update () {

}

public void spawnChunk(int posX, int posZ){
    for(int x = 0; x <= chunkWidth; x++){
        for(int y =0; y <= chunkHeight; y++){
            for(int z = 0; x <= chunkWidth; z++){
                //create object
                Instantiate(TestBlock, new Vector3(x + posX, y, z + posZ), Quaternion.identity);
            }
        }
    }
}
}

1 个答案:

答案 0 :(得分:0)

在最深的for循环中,x将始终小于chunkWidth,从而导致无限循环; z未经过任何检查。

变化:

for(int z = 0; x <= chunkWidth; z++){

为:

for(int z = 0; z <= chunkWidth; z++){

并且Unity不应再冻结。