您好,我有一个使用字符串索引的表:
shirt = {
["shirtwhite.png"] = "shirt_white.png",
["shirtwhite.png^[multiply:#3f3f3f"] = "shirt_white.png^[multiply:#3f3f3f",
["shirtwhite.png^[multiply:#ff0000"] = "shirt_white.png^[multiply:#ff0000",
["shirtwhite.png^[multiply:#ff7f00"] = "shirt_white.png^[multiply:#ff7f00",
["shirtwhite.png^[multiply:#ffff00"] = "shirt_white.png^[multiply:#ffff00",
["shirtwhite.png^[multiply:#00ff00"] = "shirt_white.png^[multiply:#00ff00",
["shirtwhite.png^[multiply:#0000ff"] = "shirt_white.png^[multiply:#0000ff",
["shirtwhite.png^[multiply:#9f00ff"] = "shirt_white.png^[multiply:#9f00ff",
},
[这些是可编辑游戏角色皮肤的T恤纹理(具有不同颜色的颜色值)。
代码中还有更多theese表,用于字符皮肤的其他部分
在将表加载到此代码段中后,如何保持表的显示顺序?tzable位于文件“ skins.lua”中,代码段来自另一个lua文件
character_creator = {}
character_creator.skins = dofile(minetest.get_modpath("character_creator") .. "/skins.lua")
local skins = character_creator.skins
local skins_array = {}
minetest.after(0, function()
local function associative_to_array(associative)
local array = {}
for key in pairs(associative) do
table.insert(array, key)
end
return array
end
skins_array = {
skin = associative_to_array(skins.skin),
hair = associative_to_array(skins.hair),
eyes = associative_to_array(skins.eyes),
shirt = associative_to_array(skins.shirt),
pants = associative_to_array(skins.pants),
}
end)
在Lua中,只有数组(正整数索引表)具有“顺序”(可以使用ipairs
进行迭代);哈希表(如您正在使用的哈希表)是无序的。如果要按特定顺序遍历这样的表,通常会用键创建一个数组,并按所需顺序对其进行排序,然后遍历该数组以从表中提取元素。
如果您想要的话,还有一些组件(例如ordered table)可以跟踪插入并以相同的顺序返回结果。