Unity 冻结 运行,循环实例化
Unity freeze on run, looped Instantiate
我正在尝试用立方体生成一个平面世界,我有几个嵌套的 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);
}
}
}
}
}
在你最深的for循环中,x
总是小于chunkWidth
,导致死循环; z
未针对任何内容进行检查。
变化:
for(int z = 0; x <= chunkWidth; z++){
至:
for(int z = 0; z <= chunkWidth; z++){
并且 Unity 不应再冻结。
我正在尝试用立方体生成一个平面世界,我有几个嵌套的 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);
}
}
}
}
}
在你最深的for循环中,x
总是小于chunkWidth
,导致死循环; z
未针对任何内容进行检查。
变化:
for(int z = 0; x <= chunkWidth; z++){
至:
for(int z = 0; z <= chunkWidth; z++){
并且 Unity 不应再冻结。