我有一个名为particle.new的函数,其中一个参数叫做#34; color"。我需要这个永远是一张桌子,但它不是。这给了我一个错误,因为我使用了一个名为love.graphics.setColor()的函数,我需要给它一个表。我正在使用我的颜色变量,这给了我一个错误,因为它期待一张桌子而且它认为颜色不是一张桌子。无论如何,这是我的代码。
particle = {}
particle.__index = particle
function particle.new (x, y, colour, mass, drag)
local self = setmetatable({}, particle)
self.x, self.y, self.colour, self.mass, self.drag = x, y, colour, mass, drag
return self
end
function particle:draw ()
prevColor = love.graphics.getColor()
love.graphics.setColor(self.colour)
love.graphics.point(self.x, self.y)
love.graphics.setColor(prevColor)
end
function particle:update ()
end
function love.load()
gravity = -9.32
particles = {}
table.insert(particles, particle.new(50,50,{255, 0, 0, 255},1,0.2))
end
function love.draw()
for i = 1, table.maxn(particles) do
particles[i]:draw()
end
end
顺便说一下,我使用的是Love2D游戏引擎。
答案 0 :(得分:0)
你的问题不在于self.colour不是一张桌子,而是在这一行
prevColor = love.graphics.getColor()
当你这样做时,prevColor
只获得四个返回值中的一个。
解决方案是将函数调用括在一个表中,以便保留所有4个值。 (就像@EgorSkriptunoff所说的那样)
prevColor = {love.graphics.getColor()}
至于你的问题:
使用assert
和type
检查变量类型
assert(type(colour)=="table", "-Error message goes here-")
请注意,断言将抛出一个错误,该错误将调出蓝色的love2d屏幕并停止运行。