我正在尝试在 C# 中生成体素,但有一个奇怪的错误。
我已经用 C# 生成了其他体素,但从未遇到过这个错误;
长这样:
[图片见reddit上的帖子就可以看到]
我尝试了多种方法,但只有一种方法有效,在每一代之间等待一帧。
加载块数组的代码:
public void Update(float state) { if (chunkQueue.Any()) chunkService.LoadChunk(chunkQueue.Dequeue()); var cameraPosition = cameraSet.GetEntities()[0].Get<Transform>().Position; var cameraChunkPosition = new Vector2Int { X = (int)Math.Floor(cameraPosition.X / 16), Y = (int)Math.Floor(cameraPosition.Z / 16) }; for (int x = 0; x < renderDistance; x++) { for (int z = 0; z < renderDistance; z++) { var chunkPosition = cameraChunkPosition + new Vector2Int(x - halfRenderDistance, z - halfRenderDistance); if (existingChunk.Contains(chunkPosition)) continue; chunkService.LoadChunk(chunkPosition); //chunkQueue.Enqueue(chunkPosition); existingChunk.Add(chunkPosition); } } }
但是如果我取消注释 //chunkQueue.Enqueue(chunkPosition);
并注释 chunkService.LoadChunk(chunkPosition);
正确生成如下:
[图片见reddit上的帖子就可以看到]
为什么会发生这种情况?
我猜是记忆有问题还是什么的。
块生成发生在这个文件中:https://github.com/TheJemy191/FluxEngine/blob/main/MinecraftClone/ChunkService.cs
Github 回购:https://github.com/TheJemy191/FluxEngine
也在这里发布https://www.reddit.com/r/VoxelGameDev/comments/11b5yem/c_voxel_generation_weird_bug/
https://www.reddit.com/r/csharp/comments/11b5zmo/voxel_generation_weird_bug/