ConfigItem = ConfigItem or BaseClass() local ConfigItem = ConfigItem local TimeUtil_getClientTime = TimeUtil.getClientTime function ConfigItem:__init(res, max_count, callback) self.node_list = {} self.max_count = max_count self.count = 0 self.load_succeed = false self.lua_config_name = false if res == "data_skill" then self.lua_config_name = "Skill" if Config.Skill then end elseif res == "data_mon" then self.lua_config_name = "Mon" if Config.Mon then end elseif res == "data_goods" then self.lua_config_name = "Goods" if Config.Goods then end else --加载外部cdn资源 local load_call_back = function(bytes) if bytes then self.data = dbParser:OpenDb(bytes) end if callback then callback() end end lua_resM:loadOutsideTextAsset(self,"client/luaconfig/"..res..".db",load_call_back) end --独立文件 --local full_puth = res --self.data = dbParser:OpenDb(full_puth) end function ConfigItem:__delete() if self.data then self.data:deleteMe() self.data = nil end self.node_list = {} end function ConfigItem:GetItem(id) if id==nil then return nil end local node = self.node_list[id] if node ~= nil then node.time = TimeUtil_getClientTime() return node.item end node = {time = TimeUtil_getClientTime(),item = nil} self.count = self.count + 1 ConfigItem.CheckCount(self, node.time + 100) node.item = ConfigItem.GetConfigItem(self, id) TmpCfgObj = nil self.node_list[id] = node return node.item end function ConfigItem:CheckCount(time) if self.count > self.max_count then local id = nil for key, node in pairs(self.node_list) do if node.time < time then time = node.time id = key end end if id ~= nil then self.node_list[id] = nil self.count = self.count - 1 end end end function ConfigItem:GetConfigItem(id) if self.lua_config_name and id then local cfg = Config[self.lua_config_name] if type(id) == "string" then id = tonumber(id) end if cfg then local str = cfg[id] -- print("str =", id, str == nil) if str then local func = loadstring(str) if func then return func() end end end elseif self.data then local str = self.data:GetConfigItem(id) if str then local func = loadstring(str) if func then func() return TmpCfgObj end end end end