【问题标题】:Expected table. got nil error?预期的表。有零错误?
【发布时间】:2015-10-20 04:16:58
【问题描述】:

在下面的代码中

for k, smoke in pairs(self.smokes) do
     smoke.time = smoke.time - dt
     if smoke.time <= 0 then
       table.remove( self.smokes, k )
     end
   end

它告诉我 self.smokes 是一个 nil 值,尽管在我声明的代码后面

function ent:Smoke()
  table.insert( self.smokes, {time = 3, x = self.x, y = self.y} )
end

有人知道我的错误吗?谢谢大家!

【问题讨论】:

  • table.insert(self.smokes, ...) 不会使self.smokes 成为表...
  • "寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确的问题陈述对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example."

标签: lua


【解决方案1】:

因为函数 ent:Smoke 稍后在代码中运行。 把它放在顶部就可以了。

【讨论】:

  • 讽刺的名字 XD,但是,我确实尝试过这个。稍后在代码中我运行另一个表,它在那里给出了相同的错误,它运行的是相同的 self.smoke 对
【解决方案2】:

也许你想要这个:

function ent:Smoke()
  self.smokes = {time = 3, x = self.x, y = self.y}
end

而且您还需要更改其他代码:

if self.smokes then
  self.smokes.time = self.smokes.time - dt
  if self.smoke.time <= 0 then
    self.smokes = nil
  end
end

函数table.insert()用于插入数组类型表。

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 2016-11-05
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多