------------------------------------------------ --作者: gzg --日期: 2019-03-25 --文件: DataConfig.lua --模块: DataConfig --描述: 数据加载处理 ------------------------------------------------ --//模块定义 local DataConfig = {} local ConfigNames = nil --记录加载各个配置时间 local L_IsReCord_Ms = false; --记录加载各个配置的内存 local L_IsRecord_GCAlloc = false; local MetaTable = {} setmetatable(DataConfig, MetaTable) MetaTable.__index = function(mytable, name) return DataConfig.Load(name) end --数据加载 function DataConfig.Load(name) if L_IsRecord_GCAlloc and Record then Record.GCBegin(name) end if L_IsReCord_Ms and Record then Record.TimeBegin(name) end DataConfig[name] = require(string.format("Config.Data.%s", name)) if L_IsReCord_Ms and Record then Record.TimeEnd() end if L_IsRecord_GCAlloc and Record then Record.GCEnd() end return DataConfig[name] end --卸载数据 function DataConfig.UnLoad(name) if DataConfig[name] then DataConfig.RemoveRequiredByName(string.format("Config.Data.%s", name)) DataConfig[name] = nil end end --获取所有配置表名称 function DataConfig.GetConfigNames() if not ConfigNames then ConfigNames = require("Config.Data.ConfigNames") end return ConfigNames end --加载所有配置数据 function DataConfig.LoadAll() local _names = DataConfig.GetConfigNames() for i = 1, #_names do DataConfig.Load(_names[i]) end end --卸载所有配置数据 function DataConfig.UnLoadAll() local _names = DataConfig.GetConfigNames() for i = 1, #_names do DataConfig.UnLoad(_names[i]) end end function DataConfig.RemoveRequiredByName(preName) for key, _ in pairs(package.preload) do if string.find(tostring(key), preName) == 1 then package.preload[key] = nil end end for key, _ in pairs(package.loaded) do if string.find(tostring(key), preName) == 1 then package.loaded[key] = nil end end end return DataConfig