TableHelper = TableHelper or {} function TableHelper.DeepCopy(obj) local InTable = {}; local function Func(obj) if type(obj) ~= "table" then --判断表中是否有表 return obj; end local NewTable = {}; --定义一个新表 InTable[obj] = NewTable; --若表中有表,则先把表给InTable,再用NewTable去接收内嵌的表 for k,v in pairs(obj) do --把旧表的key和Value赋给新表 NewTable[Func(k)] = Func(v); end return setmetatable(NewTable, getmetatable(obj))--赋值元表 end return Func(obj) --若表中有表,则把内嵌的表也复制了 end function TableHelper.DeepCopyTable(TableData) if TableData == nil then return {} end local TmpTab = {} for k, v in pairs(TableData) do if type(v) == "table" then local SubTab = TableHelper.DeepCopyTable(v) TmpTab[k] = SubTab else TmpTab[k] = v end end return TmpTab end function TableHelper.GetName(Actor) if UE.IsValid(Actor) then return UE.GetPathName(Actor) elseif Actor ~= nil then return type(Actor) end return "[NullActor]" end function TableHelper.Contains(tab, val) for i, Val in pairs(tab) do if Val == val then return true end end return false end return TableHelper