说明:
让我们假设我制作的游戏类似于《我的世界》,但是每个方块可以有任意大小。
public struct Block
{
Size size;
OtherDataWhichDoesNotMatterInThisQuestion data;
}
我正在使用整数值作为坐标和大小。
您将如何存储这些块,因此,当您调用诸如GetBlockAtCoordinates(1,1,1)之类的东西时,将返回坐标为(0,0,0)且大小为(2,2,2)的块?
我尝试过的事情:
1)将ID存储在数组中。第一个索引将是块ID,在该块占用空间的任何地方都将是-id。无效,因为可能存在具有相同ID的块,并且我不想将ID存储为结构的ID。
图形化修饰很少
-1 -1 -1
1 -1 -1
(1为id,-1表示该空间被1占用。如果我们在ID旁边添加ID为1的块,则无法知道哪个块是哪个。)
2)将结构存储在List中并遍历每个块。
布尔值小变化: (block.coords <=坐标)&&((block.coords + block.size)> =坐标) 这似乎非常无效,因为无法使用此方法制作块。一个块可能比块大,因此需要遍历所有内容。