从另一个函数调用config param(连接全局错误)

时间:2014-08-26 21:07:14

标签: lua

local otherteam = {}
function onLoad()
    ...
    Config.aaRange.enemyrange:addParam("enemy0", otherteam[0], SCRIPT_PARAM_ONOFF, false)
    Config.aaRange.enemyrange:addParam("enemy1", otherteam[1], SCRIPT_PARAM_ONOFF, false)
    Config.aaRange.enemyrange:addParam("enemy2", otherteam[2], SCRIPT_PARAM_ONOFF, false)
end


function onDraw()
    ...
for k = 0, 3, 1 then

    if hero.charName == otherteam[k] then
        if (Config.aaRange.enemyrange."enemy" .. k) then
               ...
        end
    end
end
end

我尝试在运行时尝试连接全局敌人错误。

我可以通过删除for k循环并使用

分隔if语句来轻松解决这个问题
if (Config.aaRange.enemyrange.enemy0) then
end
if (Config.aaRange.enemyrange.enemy0) then
end
if (Config.aaRange.enemyrange.enemy0) then
end

但这看起来很混乱(我有超过3个配置)。我甚至尝试过:       j ="敌人" .. k

并在if语句中添加j而不是enemy0但没有。

我猜这是因为我试图用数字添加字符串?对不起,几个小时前才开始使用lua:x

1 个答案:

答案 0 :(得分:1)

Lua支持强制,因此在数字中添加字符串是有效的。但是如果你写的话

 j = "enemy" .. k

解释程序将Config.aaRange.enemyrange.j作为Config.aaRange.enemyrange["j"],您应该使用Config.aaRange.enemyrange[j]代替if Config.aaRange.enemyrange["enemy" .. k] then

如果没有其他变量,您可以编写

if Config.aaRange.enemyrange["enemy" .. tostring(k)] then

或更好:

{{1}}