Love2d エンジンと Lua を使用してゲームの開発を開始しました。コード構造は次のとおりです。
BaseEntity = {
x = 0,
y = 0,
w = 0,
h = 0,
img = {},
}
function BaseEntity:new(obj)
obj = obj or {}
setmetatable(obj, self)
self.__index = self
return obj
end
function BaseEntity:setPos(x, y)
self.x = x
self.y = y
end
function BaseEntity:setImage( index, image )
self.img[index] = image
end
PlayerType = {["NORMAL"] = 0, ["AI"] = 1}
PlayerState = {["SELECTED"] = 0, ["NOT_SELECTED"] = 1}
Player = {
type = PlayerType.NORMAL,
state = PlayerState.NOT_SELECTED
}
Player = BaseEntity:new(Player)
function Player:new( obj )
obj = obj or BaseEntity:new()
setmetatable(obj, self)
self.__index = self
return obj
end
function Player:setImage( image )
self.img["sprite"] = image
end
いくつかの Player オブジェクトを作成し、setImage()
関数を使用して各オブジェクトに異なる画像を割り当てると、それらはすべて、最後のオブジェクトに割り当てた同じ画像を共有します。しかし、setPos()
メソッドを使用して各オブジェクトに異なる位置を設定すると、それらは正しい独特の位置に描画されます。なぜそのようなことが起こるのですか?Lua はimg
内部のテーブルをBaseEntity
、そこから作成されたすべてのインスタンスと共有していますか?