我正在尝试制作基本实体组件系统,但我的lua脚本中出现了此错误(使用Love2D)。 我不知道问题出在哪里:
错误:systems.lua:11:“矩形”的错误参数#2(预期数字,为零)
main.lua
local system = require "systems"
function love.load()
system.newPlayer()
end
function love.draw()
system.drawPlayer()
end
systems.lua
local S = {}
local entities = require "entities"
local components = require "components"
function S.newPlayer()
entities.player()
end
function S.drawPlayer()
love.graphics.rectangle("fill",components.getX(1),components.getY(1), 10, 10)
end
return S
entities.lua
local components = require "components"
local E = {}
function E.player()
components.setX(1,20)
components.setY(1,20)
end
return E
components.lua
local C = {}
local x = {}
function C.setX(key, value)
x.key = value
end
function C.getX(index)
return x.index
end
local y = {}
function C.setY(key, value)
y.key = value
end
function C.getY(index)
return y.index
end
return C
我在调用components.setX(1,20)时将错误跟踪到entity.lua,因为在那之后,即使功能将其设置为20,打印键的值仍为nil。
答案 0 :(得分:4)
在
x.key = value
键是字符串值"key"
。
如果希望键为变量key
的值,请执行
x[key] = value
答案 1 :(得分:0)
您不能将数字用作表格的键。您可以做两件事(选择一项):
function C.getX(index)
return x[index]
end
function C.setX(key, value)
x[key] = value
end
-- same for y
components.getX("1")
components.setX("1",20)