以下のようなコードで詰まった。
-- クラス定義
-- 2点を表すオブジェクト
Vector2 = {}
-- コンストラクタ
function Vector2.new(x, y)
local this = {
x = x,
y = y
}
-- メソッド定義
--this.Function = function()
--end
return this
end
TablePos = Vector2.new(100, 100)--定数扱いにする物と思ってくれていい
BasePos = TablePos--ベース値。基準にしたいので、編集しないようにしたい
WorkPos = TablePos--作業値。
UnityDebugLog(BasePos.x)--100
UnityDebugLog(WorkPos.x)--100
WorkPos.x = 90--作業用のデータを書き換え
UnityDebugLog(BasePos.x)--90!!!!!
UnityDebugLog(WorkPos.x)--90
冷静に考えれば、オブジェクトの参照をお互い持っているわけで、その同じ物を指している物を書き換えるのだから
書き換えた先の物は同じ物を見ているわけで当然だと思えるだろう。
ただ、TablePosが関数の引数として渡されて、それを保持する時に結構詰まった。
その場合は、BasePosに該当する側は、新しいVector2オブジェクトを生成しないとダメ。