首页 > 解决方案 > Unity Editor 在运行这些脚本时崩溃

问题描述

因此,我的编辑器在运行这些脚本时不断崩溃。我的电脑规格(如果需要):英特尔 i5、8GB 内存、Windows 10

我正在尝试制作 Minecraft 游戏,但我的编辑器崩溃了:

体素数据.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public static class VoxelData
{
    public static readonly int ChunkWidth = 2;
    public static readonly int ChunkHeight = 2;
    public static readonly Vector3[] voxelVerts = new Vector3[8] {
        new Vector3(0.0f,0.0f,0.0f),
        new Vector3(1.0f,0.0f,0.0f),
        new Vector3(1.0f,1.0f,0.0f),
        new Vector3(0.0f,1.0f,0.0f),
        new Vector3(0.0f,0.0f,1.0f),
        new Vector3(1.0f,0.0f,1.0f),
        new Vector3(1.0f,1.0f,1.0f),
        new Vector3(0.0f,1.0f,1.0f),
};
    public static readonly int[,] voxelTris = new int[6, 6]{
        {0,3,1,1,3,2},
        {5,6,4,4,6,7},
        {3,7,2,2,7,6}, // top face
        {1,5,0,0,5,4},
        {4,7,0,0,7,3},
        {1,2,5,5,2,6}

        };

}

和 Chunk.cs 脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chunk : MonoBehaviour
{
    public MeshRenderer meshRenderer;
    public MeshFilter meshFilter;
    // Start is called before the first frame update
    int vertexIndex = 0;
    List<Vector3> vertices = new List<Vector3>();
    List<int> triangles = new List<int>();
    List<Vector2> uvs = new List<Vector2>();
    void Start()
    {

        for(int y = 0; y < VoxelData.ChunkHeight; y++)
        {
            for (int x = 0; x < VoxelData.ChunkWidth; x++)
            {
                for (int z = 0; x < VoxelData.ChunkWidth; z++)
                {
                    AddVoxelDataToChunk(new Vector3(x, y, z));
                }
            }
        }

        CreateMesh();

    }
     void AddVoxelDataToChunk(Vector3 pos)
    {
        for (int p = 0; p < 6; p++)
        {
            for (int i = 0; i < 6; i++)
            {
                int triangleIndex = VoxelData.voxelTris[p, i];
                vertices.Add(VoxelData.voxelVerts[triangleIndex] + pos);
                triangles.Add(vertexIndex);

                uvs.Add(Vector2.zero);

                vertexIndex++;
            }
        }
    }
    void CreateMesh()
    {
        Mesh mesh = new Mesh();
        mesh.vertices = vertices.ToArray();
        mesh.triangles = triangles.ToArray();
        mesh.uv = uvs.ToArray();

        mesh.RecalculateNormals();
        meshFilter.mesh = mesh;
    }
    // Update is called once per frame
}

为什么它一直崩溃,这很烦人,不让我继续这个项目。请帮助并建议该怎么做

标签: c#unity3d

解决方案


最内心的

             // | here !
             // v 
for (int z = 0; x < VoxelData.ChunkWidth; z++)
{
    AddVoxelDataToChunk(new Vector3(x, y, z));
}

将导致无限循环,因为x它内部没有任何变化。

很可能应该是z

             // | here !
             // v 
for (int z = 0; z < VoxelData.ChunkWidth; z++)
{
    AddVoxelDataToChunk(new Vector3(x, y, z));
}

推荐阅读