Files
Main/Assets/GameAssets/Resources/Lua/Config/DataConfig.lua

89 lines
2.0 KiB
Lua
Raw Normal View History

2025-01-25 04:38:09 +08:00
------------------------------------------------
--作者: 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