我搜索了很多,但是找不到解决方法。您可以提供任何帮助。
-- The array compiled of enemies only allowed in the current
-- level phase
local EnemyList = {}
-- Counter to determine the next spot in the EnemyList
-- array to insert into
local counter = 1
for i=1,#Enemies do
if Enemies[i].phase == 0 or Enemies[i].phase == which_phase then
EnemyList[counter].src = Enemies[i].src
EnemyList[counter].exp = Enemies[i].exp
counter = counter + 1
end
end
我在尝试索引nil
值时遇到错误,引用EnemyList
表/数组。我想要完成的是我正在尝试编译一个只允许的敌人的新阵列。我想我不确定如何在EnemyList
表中插入新行。我尝试使用table.insert
,但是value参数是必需的,我不知道如何通过将多个值存储到EnemyList
数组中来实现这一点。
对于将新行插入空表/数组的正确方法的任何帮助或见解将不胜感激。谢谢!
修改 我得到了一个有效的解决方案,但我认为如果将来有人发现它,我应该在这里更新代码。
-- The array compiled of enemies only allowed in the current
-- level phase
local EnemyList = {}
for i=1,#Enemies do
if Enemies[i].phase == 0 or Enemies[i].phase == which_phase then
table.insert( EnemyList, { src = Enemies[i].src, exp = Enemies[i].exp } )
end
end
答案 0 :(得分:2)
您可以在Lua中的表中存储表。表以两种方式之一索引:首先,按索引号。这是table.insert
使用的内容;它将在下一个索引号处添加一个条目。
第二种方式是按键; e.g。
> t = {}
> t.test = {}
> =t.test
table: 0077D320
您可以将表插入表中;这是您创建2D表的方法。由于您定义表格的方式,type(EnemyList[counter]) = table
。
您可以通过运行table.insert(table, value)
将新条目插入表中。这会将value
分配给下一个可用的数字条目。 type(value)
也可以是table
;这就是你在Lua中创建“多维数组”的方法。
顺便说一下,我建议使用for i=1,#Enemies
而不是for i,v in ipairs(Enemies)
。第二个将迭代Enemies
表中的所有数字条目。