我正在制作一个基于街区的城市建筑游戏,我试图找出一种将多个相同类型的街区合并到盒子中以进行优化的有效方法。因此,假设有一栋建筑物的墙壁和16x30x16块砖。与其绘制7,680个块,不如将它们绘制为一个具有重复纹理的巨型扁平矩形棱柱,这将大大提高效率。
我首先创建了条带,然后打算将其进一步合并到窗格中,但是这种方法似乎已经太慢了,因为它必须遍历plot(chunk)中的每个块,检查是否可以合并到当前条中,如果是,则将其合并。
预先感谢
local function Draw(plot)
local blocks = plot.blocks
local slabs = NewAutotable(3)
local slabList = {}
for y = 1, 32 do
for x = 1, 16 do
local currentSlab = NewSlab(x, y, 1, 1, 1, 1, blocks[x][y][1])
slabs[x][y][1] = currentSlab
slabList[#slabList + 1] = currentSlab
for z = 2, 16 do
if currentSlab[7] == blocks[x][y][z] then
GrowSlab(currentSlab, 0, 0, 1)
else
currentSlab = NewSlab(x, y, z, 1, 1, 1, blocks[x][y][z + 1])
slabs[x][y][z] = currentSlab
slabList[#slabList + 1] = currentSlab
end
end
end
end
end