115 lines
3.6 KiB
Lua
115 lines
3.6 KiB
Lua
local ResourceManager = {
|
|
sceneAbPath = {}
|
|
}
|
|
|
|
local AB_SUFFIX = ".ab"
|
|
|
|
local ResMgr = CS.BF.BFMain.Instance.ResMgr
|
|
|
|
function ResourceManager:getSceneAssetBundlePath(path)
|
|
local abPath = self.sceneAbPath[path]
|
|
if abPath == nil then
|
|
local start_index = string.find(path, '/')
|
|
if start_index == nil then
|
|
abPath = path .. AB_SUFFIX
|
|
else
|
|
abPath = string.sub(path, start_index + 1) .. AB_SUFFIX
|
|
end
|
|
self.sceneAbPath[path] = abPath
|
|
end
|
|
return abPath
|
|
end
|
|
|
|
function ResourceManager:getSceneLoadPath(scenePath)
|
|
if USE_AB then
|
|
return ResMgr:GetSceneLoadPath(self:getSceneAssetBundlePath(scenePath))
|
|
else
|
|
return scenePath:gsub("^%l", string.upper)
|
|
end
|
|
end
|
|
|
|
function ResourceManager:loadAsync(path, type, callback)
|
|
return self:loadOriginAssetAsync(path, type, function(assetPath, asset)
|
|
local obj = CS.UnityEngine.Object.Instantiate(asset)
|
|
callback(assetPath, obj)
|
|
end)
|
|
end
|
|
|
|
function ResourceManager:loadOriginAssetAsync(path, type, callback)
|
|
return ResMgr:LoadAsync(path, type, callback)
|
|
end
|
|
|
|
function ResourceManager:loadSceneAsync(scenePath, callback)
|
|
ResMgr:LoadSceneAsync(self:getSceneAssetBundlePath(scenePath), callback)
|
|
end
|
|
|
|
function ResourceManager:unloadScene(path)
|
|
ResMgr:UnloadScene(self:getSceneAssetBundlePath(path))
|
|
end
|
|
|
|
function ResourceManager:unload(path, immediately)
|
|
if immediately then
|
|
ResMgr:Unload(path, true)
|
|
else
|
|
ResMgr:Unload(path, false)
|
|
end
|
|
end
|
|
|
|
function ResourceManager:unloadAllDelayAssets()
|
|
ResMgr:UnloadAllDelayAssets()
|
|
end
|
|
|
|
function ResourceManager:clear()
|
|
ResMgr:Clear()
|
|
end
|
|
|
|
function ResourceManager:destroyPrefab(prefab)
|
|
CS.UnityEngine.Object.Destroy(prefab)
|
|
end
|
|
|
|
function ResourceManager:containsAsset(assetPath)
|
|
return ResMgr:ContainsAsset(assetPath)
|
|
end
|
|
|
|
if NOT_PUBLISH then
|
|
ResourceManager._ReleaseloadOriginAssetAsync = ResourceManager.loadOriginAssetAsync
|
|
function ResourceManager:loadOriginAssetAsync(path, type, callback)
|
|
local function checkAsset(assetPath, asset)
|
|
if asset == nil then
|
|
Logger.logError("[LOAD_ERROR]load error:%s", assetPath)
|
|
end
|
|
callback(assetPath, asset)
|
|
end
|
|
self:_ReleaseloadOriginAssetAsync(path, type, checkAsset)
|
|
end
|
|
|
|
ResourceManager._ReleaseloadAsync = ResourceManager.loadAsync
|
|
function ResourceManager:loadAsync(...)
|
|
if self._debugLoadAsyncFuncMap == nil then
|
|
self._debugLoadAsyncFuncMap = {
|
|
[UIPrefabManager.loadUIWidgetAsync] = true,
|
|
[EffectManager.loadUIEffectAsync] = true,
|
|
[EffectManager.loadEffectAsync] = true,
|
|
[EffectManager.loadBattleEffectAsync] = true,
|
|
[EffectManager.loadHeroShowEffectAsync] = true,
|
|
[ModelManager.loadHeroAsync] = true,
|
|
[ModelManager.loadWeaponAsync] = true,
|
|
[ModelManager.loadModelAsync] = true,
|
|
[ModelManager.loadHeroShowAsync] = true,
|
|
[ModelManager.loadMonsterAsync] = true,
|
|
[SpineManager.loadUISpinePrefabAsync] = true,
|
|
[SpineManager.loadMeshSpinePrefabAsync] = true,
|
|
[SpineManager.loadHeroAsync] = true,
|
|
[SpineManager.loadBattleEffectAsync] = true,
|
|
}
|
|
end
|
|
local currFunc = debug.getinfo(2, "f").func
|
|
if self._debugLoadAsyncFuncMap[currFunc] == nil then
|
|
Logger.logFatal("you can not call ResourceManager:loadAsync directly")
|
|
end
|
|
self:_ReleaseloadAsync(...)
|
|
end
|
|
end
|
|
|
|
|
|
return ResourceManager |