local tbmoffsets = {}
local facedir = {}
local row = {}
local height = 10
local widthl = -5
local widthr = 5
local depth = 3
Z1=1
for Y1 = height, -1,-1 do
for X1 = widthl,widthr do
row[#row + 1] = {X = X1, Y = Y1, Z = Z1}
end
--facedir[Y1]=row
end
for m = height,-1,-1 do
for n = 1,#row do
o = row[n].Y
if o == m then
print(o)
facedir[o] = row[n]
end
end
end
tbmoffsets[1] = facedir
为什么这段代码不会产生这样的表格;
1
1
1
X=-1 Z=1 Y=2
2
X=0 Z=1 Y=2
3
X=1 Z=1 Y=2
2
1
X=-1 Z=1 Y=1
2
X=0 Z=1 Y=1
3
X=1 Z=1 Y=1
3
1
X=-1 Z=1 Y=0
2
X=0 Z=1 Y=0
3
X=1 Z=1 Y=0
你会注意到我想要的格式化将所有类似的Y变量放在那里" block" (表)当我在脑海中读到这段代码时,它应该这样做,但对我来说没有这样的运气,3天这个可用的11行代码,我尝试了十几个或更多相同代码的变体,无论我是什么做到这一点它总是弄乱当前版本产生的结果,只将X值组合在一起= 5然后poof丢弃所有剩余的数据> :(真的让我想打败这台电脑。
上述代码的结果:
1:
1:
X: 5
Y: 1
Z: 1
2:
X: 5
Y: 2
Z: 1
3:
X: 5
Y: 3
Z: 1
4:
X: 5
Y: 4
Z: 1
5:
X: 5
Y: 5
Z: 1
6:
X: 5
Y: 6
Z: 1
7:
X: 5
Y: 7
Z: 1
8:
X: 5
Y: 8
Z: 1
9:
X: 5
Y: 9
Z: 1
10:
X: 5
Y: 10
Z: 1
0:
X: 5
Y: 0
Z: 1
-1:
X: 5
Y: -1
Z: 1
答案 0 :(得分:0)
如果您更换
for m = height,-1,-1 do
for n = 1,#row do
o = row[n].Y
if o == m then
print(o)
facedir[o] = row[n]
end
end
end
与
for m = height,-1,-1 do
for n = 1,#row do
o = row[n].Y
if o == m then
if not facedir[o] then
facedir[o] = {}
end
local t = facedir[o]
t[#t + 1] = row[n]
end
end
end
然后你会得到更像我想要的价值观。虽然如果您创建独立的row
表而不是如下所示的巨型row
表,您可以完全避免第二个循环。
local tbmoffsets = {}
local facedir = {}
local height = 10
local widthl = -5
local widthr = 5
local depth = 3
local Z1=1
for Y1 = height, -1,-1 do
local row = {}
for X1 = widthl,widthr do
row[#row + 1] = {X = X1, Y = Y1, Z = Z1}
end
facedir[Y1]=row
end
tbmoffsets[1] = facedir