试图对表值进行算术运算。

我正在维护某人的 Lua 代码,但 Lua 不是我首选的语言。这可能是一个完全的初学者问题,但我似乎在 Google 或 SO 上找不到答案......

以下代码产生错误

if !(v.LastHealth == v:Health()) then
    local newColor = {}
    newColor.r = v.orgColor.r - (v.orgColor.r - curColor.r) --这是错误发生的行
    newColor.g = v.orgColor.g - (v.orgColor.g * clrPercent)
    newColor.b = v.orgColor.b - (v.orgColor.b * clrPercent)
    newColor.a = v.orgColor.a - (v.orgColor.a - curColor.a)

    v:SetColor( newColor )

产生以下错误

 attempt to perform arithmetic on field 'r' (a table value)

orgColor(也许不完全确定 - v.orgColor 可能是一个过时的东西)和 curColor 是具有条目(Uh。我认为。在 Lua 中,bla.x 和 bla [x] 是相同的,对吗?)r、g、b 和 a 的表。显然,我不能对来自表格的事物进行数学运算吗?我应该在处理它们之前储存所有这些值到本地变量吗?那似乎不对。

EDIT:

打印 v.orgColor 给出 table: 0x40390080,我认为这意味着它存在且是一个表。奇怪的是,v.orgColor.r 还给出另一个表!这听起来像是原因。

点赞
用户1726380
用户1726380

事实证明,如我所预期的那样,v.orgColor并非由主程序设置,而是由与代码示例相同的脚本设置的。有一个API更改使一个曾经返回四个RGBA值的函数返回了一个包含相同值的表格;旧代码将orgColor.r设置为包含这些值的表格,导致错误。

故事的寓意是,你应该始终确保知道设置您所使用的变量的是什么。

2014-01-17 14:58:21