1

最近,我决定尝试 Lua/Love2D。我决定创建一个小游戏,我正在研究一种存储 NPC 和属于他们的数据的方法。它的工作原理非常简单:每个 NPC 都有一个存储其标识符的内存槽。为此,我决定研究动态变量。我实现了它们,但它不起作用。我收到错误“尝试索引字符串值”代码在这里,错误在第 13 行。我做错了什么?

npcmem01 = {visible="false", x=0, y=0, npctype="", weapon=0}
npcmem02 = {visible="false", x=0, y=0, npctype="", weapon=0}
npcmem03 = {visible="false", x=0, y=0, npctype="", weapon=0}
npcmem04 = {visible="false", x=0, y=0, npctype="", weapon=0}
local vars = {"npcmem"}

function SpawnNPC(npctype, x, y, slot)

    if npctype == "Civilian" then
        ("npcmem" .. slot).npctype = "Civilian"
    end

end
4

1 回答 1

2

要做到这一点(动态变量名称),您需要使用环境表_G

_G["npcmem" .. slot].npctype = "Civilian"

但是,您确实应该使用一个简单的数组:

npcs = {};

function SpawnNPC(npctype, x, y, slot)
    local tmp = {visible="false", x=0, y=0, npctype="", weapon=0}
    if npctype == "Civilian" then
        tmp.npctype = "Civilian"
        npcs[slot] = tmp
    end
end
于 2014-04-13T12:07:26.507 回答