45 lines
1.4 KiB
Lua
45 lines
1.4 KiB
Lua
--- 文件工具
|
|
FileTool = FileTool or {}
|
|
FileTool.IsServer = nil;
|
|
-- 缓存的资产
|
|
FileTool.CacheAsset = {};
|
|
|
|
---@param AssetPath string
|
|
---@param CallBackFunc fun(LoadObject:UObject,resID:int32)
|
|
---@param Obj table CallBackFunc拥有者
|
|
---@param SaveAsset bool 是否保存
|
|
function FileTool.AsyncLoadAsset(AssetPath, CallBackFunc, Obj, SaveAsset)
|
|
if not UE.IsValid(FileTool.CacheAsset[AssetPath]) then
|
|
local softObjPath = KismetSystemLibrary.MakeSoftObjectPath(AssetPath);
|
|
STExtraBlueprintFunctionLibrary.GetAssetByAssetReferenceAsync(softObjPath, ObjectExtend.CreateDelegate(UGCGameSystem.GameState, function(LoadObject, resID)
|
|
if Obj ~= nil then
|
|
CallBackFunc(Obj, LoadObject);
|
|
else
|
|
CallBackFunc(LoadObject);
|
|
end
|
|
if UE.IsValid(LoadObject) and SaveAsset then
|
|
FileTool.CacheAsset[AssetPath] = LoadObject;
|
|
end
|
|
end), true);
|
|
else
|
|
if Obj ~= nil then
|
|
CallBackFunc(Obj, FileTool.CacheAsset[AssetPath]);
|
|
else
|
|
CallBackFunc(FileTool.CacheAsset[AssetPath]);
|
|
end
|
|
end
|
|
end
|
|
|
|
---@param AssetPath string
|
|
---@param SaveAsset bool 是否保存
|
|
function FileTool.LoadAsset(AssetPath, SaveAsset)
|
|
if not UE.IsValid(FileTool.CacheAsset[AssetPath]) then
|
|
local TargetAsset = UE.LoadObject(AssetPath);
|
|
if SaveAsset and UE.IsValid(TargetAsset) then
|
|
FileTool.CacheAsset[AssetPath] = TargetAsset;
|
|
end
|
|
return TargetAsset;
|
|
end
|
|
return FileTool.CacheAsset[AssetPath];
|
|
end
|