Единство застыло на бегу, зациклено

Я пытаюсь создать плоский мир из кубов, у меня есть несколько вложенных циклов для циклического перемещения по координатам и размещения каждого блока. Движок игры Unity зависает, когда я запускаю приложение. Из того, что я могу сказать, петли верны, они должны работать и правильно выходить. Первоначально я думал, что, возможно, я пытался создать слишком много объектов, поэтому я значительно уменьшил количество, но я все еще получаю ту же проблему. Я давно смотрю на этот код и не могу найти проблему, поэтому мне было интересно, если кто-нибудь знает, что это за проблема?

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 ответ

Решение

В вашем самом глубоком круге, x всегда будет меньше чем chunkWidth, вызывая бесконечный цикл; z не проверяется ни против чего.

Изменить:

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

чтобы:

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

и Единство больше не должно замерзать.

Другие вопросы по тегам