基本上:
有没有办法在表格后面增加值来创建表格? (比如object1 {},object2 {},object3 {}等......但是在主表中,'created_objects')
但只有点击时,我才会排除循环部分(但如果没有请告诉我)
到目前为止,这是我的代码,但它没有编译。
function object_create(x, y, id) **--Agruments telling the function where the box should spawn and what the ID of the box is (variable 'obj_count' which increases every time a box is spawned)**
currobj = "obj" .. id **--Gives my currently created object a name**
crob.[currobj] = {} **--Is supposed to create a table for the current object, which holds all of its properties. **
crob.[currobj].body = love.physics.newBody(world, x, y, "dynamic")
crob.[currobj].shape = love.physics.newRectangleShape(30, 30)
crob.[currobj].fixture = love.physics.newFixture(crob.[currobj].body, crob.[currobj].shape, 1) **--The properties**
crob.[currobj].fixture:setRestitution(0.3)
但是我应该用什么来代替[currobj]?
找到我要找的东西。以下是人们想知道的代码:
function block_create(x,y,id) - (鼠标x和y,以及增加的变量)
blocks[id] = {}
blocks[id][1] = love.physics.newBody(world, x, y, "dynamic")
blocks[id][2] = love.physics.newRectangleShape(45, 45)
blocks[id][3] = love.physics.newFixture(blocks[id][1], blocks[id][2])
blocks[id][3]:setRestitution(0.2)
blocks[id][4] = math.random(0, 255) --The Color
blocks[id][5] = math.random(0, 255)
blocks[id][6] = math.random(0, 255)
blockcount = blockcount + 1
答案 0 :(得分:2)
我可能会做这样的事情。
local blocks = {} -- equivalent of your crob table
function create_block(x, y)
local block = funcToCreateBlock() -- whatever code to create the block
table.insert(blocks, block)
return block
end
如果您想获得对刚刚使用该函数创建的块的引用,只需捕获它。
-- gives you the new block, automatically adds it to the list of created blocks
local new_block = create_block(0, 10)
将块对象粘贴到块表中,并自动为每个对象提供表中的数字索引。因此,如果您针对3次不同的鼠标点击调用create_block()3次,则blocks
表将如下所示:
blocks = {
[1] = blockobj1,
[2] = blockobj2,
[3] = blockobj3
}
你可以通过
从块表中获取第二个块objlocal block2 = blocks[2]
或者您可以使用pairs
或ipairs
for idx, block in pairs(blocks) do
-- do something with each block
end
抱歉,如果这不能完全回答你的问题。但是根据你所写的内容,似乎没有一个真正的理由可以解释为什么你需要在crob表中命名任何特定的块。
答案 1 :(得分:1)
如果您希望这些表格是全局的,那么您可以执行以下操作:
sNameOfTable = "NAME"
_G[sNameOfTable] = {1,2}
然后您将有一个表变量NAME
,如here所示(键盘)。
否则,如果你想让它成为其他表的孩子,那么这样的事情也会这样做:
tTbl = {}
for i = 1, 20 do
local sName = string.format( "NAME%02d", i )
tTbl[sName] = {1,2}
end
for i, v in pairs(tTbl) do
print( i, v )
end
不要担心未分类output here(键盘)。无需对具有索引的Lua表进行排序即可使用。