diff --git a/Assets/TEngine/Runtime/GameFramework/Resource/IResourceManager.cs b/Assets/TEngine/Runtime/GameFramework/Resource/IResourceManager.cs
index 05684c22..cf11bcf3 100644
--- a/Assets/TEngine/Runtime/GameFramework/Resource/IResourceManager.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Resource/IResourceManager.cs
@@ -186,23 +186,6 @@ namespace TEngine
/// 要加载资源的类型。
/// 资源实例。
T LoadAsset(string assetName, Transform parent,out AssetOperationHandle handle) where T :Object;
-
- ///
- /// 异步加载资源。
- ///
- /// 要加载资源的名称。
- /// 取消操作Token。
- /// 要加载资源的类型。
- /// 异步资源实例。
- UniTask LoadAssetAsync(string assetName,CancellationToken cancellationToken) where T : Object;
-
- ///
- /// 异步加载游戏物体。
- ///
- /// 要加载的游戏物体名称。
- /// 取消操作Token。
- /// 异步游戏物体实例。
- UniTask LoadGameObjectAsync(string assetName,CancellationToken cancellationToken);
///
/// 同步加载资源并获取句柄。
@@ -221,21 +204,21 @@ namespace TEngine
AssetOperationHandle LoadAssetAsyncHandle(string assetName) where T : Object;
///
- /// 同步加载子资源对象
+ /// 同步加载子资源对象。
///
- /// 资源类型
- /// 资源的定位地址
- public SubAssetsOperationHandle LoadSubAssetsSync(string location) where TObject : UnityEngine.Object;
+ /// 资源类型。
+ /// 资源的定位地址。
+ public SubAssetsOperationHandle LoadSubAssetsSync(string location) where TObject : Object;
///
/// 异步加载子资源对象
///
- /// 资源类型
- /// 资源的定位地址
- public SubAssetsOperationHandle LoadSubAssetsAsync(string location) where TObject : UnityEngine.Object;
+ /// 资源类型。
+ /// 资源的定位地址。
+ public SubAssetsOperationHandle LoadSubAssetsAsync(string location) where TObject : Object;
///
- /// 同步加载子资源对象
+ /// 同步加载子资源对象。
///
/// 资源信息。
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo);
@@ -251,7 +234,7 @@ namespace TEngine
SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100);
///
- /// 异步加载场景
+ /// 异步加载场景.
///
/// 场景的资源信息
/// 场景加载模式
@@ -259,5 +242,69 @@ namespace TEngine
/// 优先级
/// 异步加载场景句柄。
SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100);
+
+ ///
+ /// 异步加载资源。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 要加载资源的类型。
+ /// 异步资源实例。
+ UniTask LoadAssetAsync(string location,CancellationToken cancellationToken) where T : Object;
+
+ ///
+ /// 异步加载游戏物体。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 异步游戏物体实例。
+ UniTask LoadGameObjectAsync(string location,CancellationToken cancellationToken);
+
+ ///
+ /// 异步加载游戏物体。
+ ///
+ /// 资源定位地址。
+ /// 父节点位置。
+ /// 取消操作Token。
+ /// 异步游戏物体实例。
+ UniTask LoadGameObjectAsync(string location,Transform parent,CancellationToken cancellationToken);
+
+ ///
+ /// 异步加载原生文件。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 原生文件资源实例。
+ UniTask LoadRawAssetAsync(string location,CancellationToken cancellationToken);
+
+ ///
+ /// 异步加载子文件。
+ ///
+ /// 资源定位地址。
+ /// 资源名称。
+ /// 取消操作Token。
+ /// 资源实例类型。
+ /// 原生文件资源实例。
+ UniTask LoadSubAssetAsync(string location, string assetName, CancellationToken cancellationToken) where T : Object;
+
+ ///
+ /// 异步加载所有子文件。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 资源实例类型。
+ /// 原生文件资源实例。
+ UniTask LoadAllSubAssetAsync(string location,CancellationToken cancellationToken) where T : Object;
+
+ ///
+ /// 异步加载场景。
+ ///
+ /// 场景的定位地址。
+ /// 取消操作Token。
+ /// 场景加载模式。
+ /// 加载完毕时是否主动激活。
+ /// 优先级。
+ /// 场景资源实例。
+ UniTask LoadSceneAsyncByUniTask(string location,CancellationToken cancellationToken,LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100);
}
}
\ No newline at end of file
diff --git a/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs b/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs
index ee91a909..fa4d4302 100644
--- a/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Resource/ResourceManager.cs
@@ -412,61 +412,6 @@ namespace TEngine
}
}
- ///
- /// 异步加载资源实例。
- ///
- /// 要加载的实例名称。
- /// 取消操作Token。
- /// 资源实实例。
- public async UniTask LoadAssetAsync(string assetName, CancellationToken cancellationToken) where T : Object
- {
- AssetOperationHandle handle = LoadAssetAsyncHandle(assetName);
-
- bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
-
- if (cancelOrFailed)
- {
- return null;
- }
-
- if (typeof(T) == typeof(GameObject))
- {
- GameObject ret = handle.InstantiateSync();
-
- AssetReference.BindAssetReference(ret, handle, assetName);
-
- return ret as T;
- }
- else
- {
- return handle.AssetObject as T;
- }
- }
-
- ///
- /// 异步加载游戏物体。
- ///
- /// 要加载的游戏物体名称。
- /// 取消操作Token。
- /// 异步游戏物体实例。
- public async UniTask LoadGameObjectAsync(string assetName, CancellationToken cancellationToken)
- {
- AssetOperationHandle handle = LoadAssetAsyncHandle(assetName);
-
- bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
-
- if (cancelOrFailed)
- {
- return null;
- }
-
- GameObject ret = handle.InstantiateSync();
-
- AssetReference.BindAssetReference(ret, handle, assetName);
-
- return ret;
- }
-
///
/// 同步加载资源并获取句柄。
///
@@ -543,5 +488,163 @@ namespace TEngine
{
return YooAssets.LoadSceneAsync(assetInfo,sceneMode,activateOnLoad,priority);
}
+
+
+ ///
+ /// 异步加载资源实例。
+ ///
+ /// 要加载的实例名称。
+ /// 取消操作Token。
+ /// 资源实实例。
+ public async UniTask LoadAssetAsync(string assetName, CancellationToken cancellationToken) where T : Object
+ {
+ AssetOperationHandle handle = LoadAssetAsyncHandle(assetName);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ if (cancelOrFailed)
+ {
+ return null;
+ }
+
+ if (typeof(T) == typeof(GameObject))
+ {
+ GameObject ret = handle.InstantiateSync();
+
+ AssetReference.BindAssetReference(ret, handle, assetName);
+
+ return ret as T;
+ }
+ else
+ {
+ return handle.AssetObject as T;
+ }
+ }
+
+ ///
+ /// 异步加载游戏物体。
+ ///
+ /// 要加载的游戏物体名称。
+ /// 取消操作Token。
+ /// 异步游戏物体实例。
+ public async UniTask LoadGameObjectAsync(string assetName, CancellationToken cancellationToken)
+ {
+ AssetOperationHandle handle = LoadAssetAsyncHandle(assetName);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ if (cancelOrFailed)
+ {
+ return null;
+ }
+
+ GameObject ret = handle.InstantiateSync();
+
+ AssetReference.BindAssetReference(ret, handle, assetName);
+
+ return ret;
+ }
+
+ ///
+ /// 异步加载游戏物体。
+ ///
+ /// 资源定位地址。
+ /// 父节点位置。
+ /// 取消操作Token。
+ /// 异步游戏物体实例。
+ public async UniTask LoadGameObjectAsync(string location, Transform parent, CancellationToken cancellationToken)
+ {
+ GameObject gameObject = await LoadGameObjectAsync(location,cancellationToken);
+ if (parent != null)
+ {
+ gameObject.transform.SetParent(parent);
+ }
+ else
+ {
+ Log.Error("Set Parent Failed");
+ }
+ return gameObject;
+ }
+
+ ///
+ /// 异步加载原生文件。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 原生文件资源实例操作句柄。
+ public async UniTask LoadRawAssetAsync(string location, CancellationToken cancellationToken)
+ {
+ RawFileOperationHandle handle = YooAssets.LoadRawFileAsync(location);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ return cancelOrFailed ? null : handle;
+ }
+
+ ///
+ /// 异步加载子文件。
+ ///
+ /// 资源定位地址。
+ /// 资源名称。
+ /// 取消操作Token。
+ /// 资源实例类型。
+ /// 原生文件资源实例。
+ public async UniTask LoadSubAssetAsync(string location,string assetName, CancellationToken cancellationToken) where T : Object
+ {
+ var assetInfo = GetAssetInfo(location);
+ if (assetInfo == null)
+ {
+ Log.Fatal($"AssetsInfo is null");
+ return null;
+ }
+
+ SubAssetsOperationHandle handle = YooAssets.LoadSubAssetsAsync(assetInfo);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ return cancelOrFailed ? null : handle.GetSubAssetObject(assetName);
+ }
+
+ ///
+ /// 异步加载子文件。
+ ///
+ /// 资源定位地址。
+ /// 取消操作Token。
+ /// 资源实例类型。
+ /// 原生文件资源实例。
+ public async UniTask LoadAllSubAssetAsync(string location,CancellationToken cancellationToken) where T : Object
+ {
+ var assetInfo = GetAssetInfo(location);
+ if (assetInfo == null)
+ {
+ Log.Fatal($"AssetsInfo is null");
+ return null;
+ }
+
+ SubAssetsOperationHandle handle = YooAssets.LoadSubAssetsAsync(assetInfo);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ return cancelOrFailed ? null : handle.GetSubAssetObjects();
+ }
+
+ ///
+ /// 异步加载场景.
+ ///
+ /// 场景的定位地址.
+ /// 取消操作Token。
+ /// 场景加载模式.
+ /// 加载完毕时是否主动激活.
+ /// 优先级.
+ /// 场景资源实例。
+ public async UniTask LoadSceneAsyncByUniTask(string location,CancellationToken cancellationToken,LoadSceneMode sceneMode = LoadSceneMode.Single,
+ bool activateOnLoad = true, int priority = 100)
+ {
+ SceneOperationHandle handle = YooAssets.LoadSceneAsync(location,sceneMode,activateOnLoad,priority);
+
+ bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
+
+ return cancelOrFailed ? default : handle.SceneObject;
+ }
}
}
\ No newline at end of file