资源异步加载从缓存中延迟分帧处理。

This commit is contained in:
ALEXTANG
2024-04-07 15:33:45 +08:00
parent 4c34858ce0
commit d5bb64b314

View File

@@ -14,6 +14,7 @@ namespace TEngine
internal sealed partial class ResourceManager : ModuleImp, IResourceManager internal sealed partial class ResourceManager : ModuleImp, IResourceManager
{ {
#region Propreties #region Propreties
/// <summary> /// <summary>
/// 资源包名称。 /// 资源包名称。
/// </summary> /// </summary>
@@ -582,6 +583,7 @@ namespace TEngine
AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey); AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey);
if (assetObject != null) if (assetObject != null)
{ {
await UniTask.Yield();
callback?.Invoke(assetObject.Target as T); callback?.Invoke(assetObject.Target as T);
return; return;
} }
@@ -640,6 +642,7 @@ namespace TEngine
AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey); AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey);
if (assetObject != null) if (assetObject != null)
{ {
await UniTask.Yield();
return assetObject.Target as T; return assetObject.Target as T;
} }
@@ -676,6 +679,7 @@ namespace TEngine
AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey); AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey);
if (assetObject != null) if (assetObject != null)
{ {
await UniTask.Yield();
return AssetsReference.Instantiate(assetObject.Target as GameObject, parent, this).gameObject; return AssetsReference.Instantiate(assetObject.Target as GameObject, parent, this).gameObject;
} }
@@ -727,10 +731,13 @@ namespace TEngine
await TryWaitingLoading(assetObjectKey); await TryWaitingLoading(assetObjectKey);
float duration = Time.time;
AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey); AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey);
if (assetObject != null) if (assetObject != null)
{ {
loadAssetCallbacks.LoadAssetSuccessCallback(location, assetObject.Target, 0, userData); await UniTask.Yield();
loadAssetCallbacks.LoadAssetSuccessCallback(location, assetObject.Target, Time.time - duration, userData);
return; return;
} }
@@ -749,8 +756,6 @@ namespace TEngine
throw new GameFrameworkException(errorMessage); throw new GameFrameworkException(errorMessage);
} }
float duration = Time.time;
AssetHandle handle = GetHandleAsync(location, assetType, packageName: packageName); AssetHandle handle = GetHandleAsync(location, assetType, packageName: packageName);
@@ -814,10 +819,13 @@ namespace TEngine
await TryWaitingLoading(assetObjectKey); await TryWaitingLoading(assetObjectKey);
float duration = Time.time;
AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey); AssetObject assetObject = m_AssetPool.Spawn(assetObjectKey);
if (assetObject != null) if (assetObject != null)
{ {
loadAssetCallbacks.LoadAssetSuccessCallback(location, assetObject.Target, 0, userData); await UniTask.Yield();
loadAssetCallbacks.LoadAssetSuccessCallback(location, assetObject.Target, Time.time - duration, userData);
return; return;
} }
@@ -837,8 +845,6 @@ namespace TEngine
throw new GameFrameworkException(errorMessage); throw new GameFrameworkException(errorMessage);
} }
float duration = Time.time;
AssetHandle handle = GetHandleAsync(location, assetInfo.AssetType, packageName: packageName); AssetHandle handle = GetHandleAsync(location, assetInfo.AssetType, packageName: packageName);
if (loadAssetCallbacks.LoadAssetUpdateCallback != null) if (loadAssetCallbacks.LoadAssetUpdateCallback != null)