c# - 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
}
为什么它一直崩溃,这很烦人,不让我继续这个项目。请帮助并建议该怎么做
解决方案
最内心的
// | 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));
}
推荐阅读
- json - 在 Quarkus 的 REST Web 服务中返回 JSON 时出现 LazyInitializationException
- python - 获取 pygame 窗口但没有输出
- react-native - 在 React-native 中具有不同嵌套 Json 数组数据的相同屏幕
- angular - 在 Angular Reactive Form 中使用 splice 在给定的索引位置添加新控件
- javascript - 路由器未在 express 应用程序中触发 .find 或 .findByID。也使用 nextjs
- google-bigquery - Big Query 过滤自定义查询创建表的空行
- sympy - SymPy:区间数学
- php - 在 `EntityType` Query_builder 中使用 `$options`
- typescript - Typescript编译的javascript不在相应的文件中
- android - Cordova:Java 更新后无法构建 Android 应用程序