我刚刚开始学习 LUA,我遇到了一个问题,我不确定哪种方式可以“正确”解决。当我将 Defold 传递vmath.vector3
给我的函数时,它似乎是通过引用传递的,因此被更改了。
如果我将它乘以任何东西,那么这个问题就解决了。
还有另一种更正确的方法来解决这个问题吗?我不想修改作为参数传递的原始向量。
function M.get_nearest_tile(x, y)
if y then -- if we've got 2 inputs, use x & y
x = math.floor(x / M.TILE_SIZE)
y = math.floor(y / M.TILE_SIZE)
return x, y
else -- if we've only got 1 input, use as vector
local vec = x * 1 -- multiplying by 1 to avoid modifying the real vector
vec.x = math.floor(vec.x / M.TILE_SIZE)
vec.y = math.floor(vec.y / M.TILE_SIZE)
return vec.x, vec.y
end
end