1. 程式人生 > >unity裡, lua 面向物件方式,成員物件有可能殘留的問題。

unity裡, lua 面向物件方式,成員物件有可能殘留的問題。



TaskItemUI = {
name = nil,
content = nil,
schedule = nil,
schedulebg = nil,
targetObj = nil,
taskData = nil,
curAimId = nil,
equipIcon = nil,
selectImage = nil,
--任務狀態改變tips
taskChangeTisp = "",
--進度特效播放中
effecting = false,
        test_table = {}
}


function TaskItemUI:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self;
return o

end

function TaskItemUI:checkAndAdd()
     if #self.test_table == 0 then
         table.insert(self.test_table,"dfafa")
     end
end



function TaskItemUI:OnDestroy()  --其他地方調釋放

    self.test_table = {}

end



結果切換場景時, 物件釋放後,test_table 按理應該清空了。  

但再次載入時, function TaskItemUI:checkAndAdd() 裡判斷長度居然不是 0,說明有殘留。   

如果寫個初始化函式 用self初始化一下,則沒這個問題了。。。


什麼原因不太清楚。。。(不過感覺是 setmetatable 方式, 這個self 其實存在了2份物件???,有時間再試驗試驗 打一下日誌。)