mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-07 16:45:10 +00:00
add:Resource模块支持操作指定资源包的资源
This commit is contained in:
@@ -14,6 +14,7 @@ namespace TEngine
|
|||||||
{
|
{
|
||||||
private int _instanceID = 0;
|
private int _instanceID = 0;
|
||||||
private string _assetLocation;
|
private string _assetLocation;
|
||||||
|
private string _packageName;
|
||||||
private AssetGroup _assetGroup;
|
private AssetGroup _assetGroup;
|
||||||
private AssetOperationHandle _operationHandle;
|
private AssetOperationHandle _operationHandle;
|
||||||
|
|
||||||
@@ -32,6 +33,11 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string AssetLocation => _assetLocation;
|
public string AssetLocation => _assetLocation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 资源包名称。
|
||||||
|
/// </summary>
|
||||||
|
public string PackageName => _packageName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 脏初始化资源分组。
|
/// 脏初始化资源分组。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -49,10 +55,13 @@ namespace TEngine
|
|||||||
/// <param name="operation">资源操作句柄。</param>
|
/// <param name="operation">资源操作句柄。</param>
|
||||||
/// <param name="assetLocation">资源定位地址。</param>
|
/// <param name="assetLocation">资源定位地址。</param>
|
||||||
/// <param name="parent">父级资源引用。(NullAble)</param>
|
/// <param name="parent">父级资源引用。(NullAble)</param>
|
||||||
public void Bind(AssetOperationHandle operation, string assetLocation, AssetReference parent = null)
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public void Bind(AssetOperationHandle operation, string assetLocation, AssetReference parent = null,
|
||||||
|
string packageName = "")
|
||||||
{
|
{
|
||||||
_operationHandle = operation;
|
_operationHandle = operation;
|
||||||
this._assetLocation = assetLocation;
|
this._assetLocation = assetLocation;
|
||||||
|
this._packageName = packageName;
|
||||||
_instanceID = gameObject.GetInstanceID();
|
_instanceID = gameObject.GetInstanceID();
|
||||||
if (parent != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
@@ -183,7 +192,8 @@ namespace TEngine
|
|||||||
/// <param name="assetOperationHandle">资源操作句柄。</param>
|
/// <param name="assetOperationHandle">资源操作句柄。</param>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
// ReSharper disable once ParameterHidesMember
|
// ReSharper disable once ParameterHidesMember
|
||||||
public T LoadAsset<T>(string assetName, Transform parent, out AssetOperationHandle assetOperationHandle) where T : Object
|
public T LoadAsset<T>(string assetName, Transform parent, out AssetOperationHandle assetOperationHandle)
|
||||||
|
where T : Object
|
||||||
{
|
{
|
||||||
DirtyInitAssetGroup();
|
DirtyInitAssetGroup();
|
||||||
return _assetGroup.LoadAsset<T>(assetName, parent, out assetOperationHandle);
|
return _assetGroup.LoadAsset<T>(assetName, parent, out assetOperationHandle);
|
||||||
@@ -195,7 +205,8 @@ namespace TEngine
|
|||||||
/// <param name="assetName">要加载的实例名称。</param>
|
/// <param name="assetName">要加载的实例名称。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <returns>资源实实例。</returns>
|
/// <returns>资源实实例。</returns>
|
||||||
public async UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken = default) where T : Object
|
public async UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken = default)
|
||||||
|
where T : Object
|
||||||
{
|
{
|
||||||
DirtyInitAssetGroup();
|
DirtyInitAssetGroup();
|
||||||
return await _assetGroup.LoadAssetAsync<T>(assetName, cancellationToken);
|
return await _assetGroup.LoadAssetAsync<T>(assetName, cancellationToken);
|
||||||
@@ -207,7 +218,8 @@ namespace TEngine
|
|||||||
/// <param name="assetName">要加载的游戏物体名称。</param>
|
/// <param name="assetName">要加载的游戏物体名称。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
public async UniTask<GameObject> LoadGameObjectAsync(string assetName, CancellationToken cancellationToken = default)
|
public async UniTask<GameObject> LoadGameObjectAsync(string assetName,
|
||||||
|
CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
DirtyInitAssetGroup();
|
DirtyInitAssetGroup();
|
||||||
return await _assetGroup.LoadGameObjectAsync(assetName, cancellationToken);
|
return await _assetGroup.LoadGameObjectAsync(assetName, cancellationToken);
|
||||||
@@ -220,9 +232,11 @@ namespace TEngine
|
|||||||
/// <param name="handle">资源句柄。</param>
|
/// <param name="handle">资源句柄。</param>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="parent">父级引用。</param>
|
/// <param name="parent">父级引用。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源引用组件。</returns>
|
/// <returns>资源引用组件。</returns>
|
||||||
/// <exception cref="GameFrameworkException">捕获异常。</exception>
|
/// <exception cref="GameFrameworkException">捕获异常。</exception>
|
||||||
public static AssetReference BindAssetReference(GameObject go, AssetOperationHandle handle, string location = "", AssetReference parent = null)
|
public static AssetReference BindAssetReference(GameObject go, AssetOperationHandle handle,
|
||||||
|
string location = "", AssetReference parent = null, string packageName = "")
|
||||||
{
|
{
|
||||||
if (go == null)
|
if (go == null)
|
||||||
{
|
{
|
||||||
@@ -236,7 +250,7 @@ namespace TEngine
|
|||||||
|
|
||||||
var ret = go.GetOrAddComponent<AssetReference>();
|
var ret = go.GetOrAddComponent<AssetReference>();
|
||||||
|
|
||||||
ret.Bind(operation: handle, assetLocation: location, parent: parent);
|
ret.Bind(operation: handle, assetLocation: location, parent: parent, packageName: packageName);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -247,9 +261,11 @@ namespace TEngine
|
|||||||
/// <param name="go">游戏物体实例。</param>
|
/// <param name="go">游戏物体实例。</param>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="parent">父级引用。</param>
|
/// <param name="parent">父级引用。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源引用组件。</returns>
|
/// <returns>资源引用组件。</returns>
|
||||||
/// <exception cref="GameFrameworkException">捕获异常。</exception>
|
/// <exception cref="GameFrameworkException">捕获异常。</exception>
|
||||||
public static AssetReference BindAssetReference(GameObject go, string location = "", AssetReference parent = null)
|
public static AssetReference BindAssetReference(GameObject go, string location = "",
|
||||||
|
AssetReference parent = null, string packageName = "")
|
||||||
{
|
{
|
||||||
if (go == null)
|
if (go == null)
|
||||||
{
|
{
|
||||||
@@ -258,7 +274,7 @@ namespace TEngine
|
|||||||
|
|
||||||
var ret = go.GetOrAddComponent<AssetReference>();
|
var ret = go.GetOrAddComponent<AssetReference>();
|
||||||
|
|
||||||
ret.Bind(operation: null, assetLocation: location, parent: parent);
|
ret.Bind(operation: null, assetLocation: location, parent: parent, packageName: packageName);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using YooAsset;
|
using YooAsset;
|
||||||
|
|
||||||
namespace TEngine
|
namespace TEngine
|
||||||
@@ -110,8 +109,9 @@ namespace TEngine
|
|||||||
/// 检查资源是否存在。
|
/// 检查资源是否存在。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">要检查资源的名称。</param>
|
/// <param name="location">要检查资源的名称。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>检查资源是否存在的结果。</returns>
|
/// <returns>检查资源是否存在的结果。</returns>
|
||||||
HasAssetResult HasAsset(string location);
|
HasAssetResult HasAsset(string location, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置默认资源包。
|
/// 设置默认资源包。
|
||||||
@@ -123,42 +123,48 @@ namespace TEngine
|
|||||||
/// 是否需要从远端更新下载。
|
/// 是否需要从远端更新下载。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>是否需要从远端下载。</returns>
|
/// <returns>是否需要从远端下载。</returns>
|
||||||
bool IsNeedDownloadFromRemote(string location);
|
bool IsNeedDownloadFromRemote(string location, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否需要从远端更新下载。
|
/// 是否需要从远端更新下载。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="assetInfo">资源信息。</param>
|
/// <param name="assetInfo">资源信息。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>是否需要从远端下载。</returns>
|
/// <returns>是否需要从远端下载。</returns>
|
||||||
bool IsNeedDownloadFromRemote(AssetInfo assetInfo);
|
bool IsNeedDownloadFromRemote(AssetInfo assetInfo, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息列表。
|
/// 获取资源信息列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tag">资源标签。</param>
|
/// <param name="tag">资源标签。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息列表。</returns>
|
/// <returns>资源信息列表。</returns>
|
||||||
AssetInfo[] GetAssetInfos(string tag);
|
AssetInfo[] GetAssetInfos(string tag, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息列表。
|
/// 获取资源信息列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tags">资源标签列表。</param>
|
/// <param name="tags">资源标签列表。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息列表。</returns>
|
/// <returns>资源信息列表。</returns>
|
||||||
AssetInfo[] GetAssetInfos(string[] tags);
|
AssetInfo[] GetAssetInfos(string[] tags, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息。
|
/// 获取资源信息。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息。</returns>
|
/// <returns>资源信息。</returns>
|
||||||
AssetInfo GetAssetInfo(string location);
|
AssetInfo GetAssetInfo(string location, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查资源定位地址是否有效。
|
/// 检查资源定位地址是否有效。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
bool CheckLocationValid(string location);
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
bool CheckLocationValid(string location, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载资源。
|
/// 同步加载资源。
|
||||||
@@ -166,9 +172,11 @@ namespace TEngine
|
|||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
T LoadAsset<T>(string location, bool needInstance, bool needCache = false) where T : Object;
|
T LoadAsset<T>(string location, bool needInstance, bool needCache = false, string packageName = "")
|
||||||
|
where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载资源。
|
/// 同步加载资源。
|
||||||
@@ -177,9 +185,11 @@ namespace TEngine
|
|||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
T LoadAsset<T>(string location, Transform parent, bool needInstance, bool needCache = false) where T : Object;
|
T LoadAsset<T>(string location, Transform parent, bool needInstance, bool needCache = false,
|
||||||
|
string packageName = "") where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载资源。
|
/// 同步加载资源。
|
||||||
@@ -187,9 +197,11 @@ namespace TEngine
|
|||||||
/// <param name="handle">资源操作句柄。</param>
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false) where T : Object;
|
T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false,
|
||||||
|
string packageName = "") where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载资源。
|
/// 同步加载资源。
|
||||||
@@ -198,55 +210,68 @@ namespace TEngine
|
|||||||
/// <param name="handle">资源操作句柄。</param>
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle, bool needCache = false) where T : Object;
|
T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle, bool needCache = false,
|
||||||
|
string packageName = "")
|
||||||
|
where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载资源并获取句柄。
|
/// 同步加载资源并获取句柄。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>同步加载资源句柄。</returns>
|
/// <returns>同步加载资源句柄。</returns>
|
||||||
AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false) where T : Object;
|
AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false, string packageName = "")
|
||||||
|
where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载资源并获取句柄。
|
/// 异步加载资源并获取句柄。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>异步加载资源句柄。</returns>
|
/// <returns>异步加载资源句柄。</returns>
|
||||||
AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false) where T : Object;
|
AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false, string packageName = "")
|
||||||
|
where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载子资源对象。
|
/// 同步加载子资源对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="TObject">资源类型。</typeparam>
|
/// <typeparam name="TObject">资源类型。</typeparam>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location) where TObject : Object;
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location, string packageName = "")
|
||||||
|
where TObject : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载子资源对象
|
/// 异步加载子资源对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="TObject">资源类型。</typeparam>
|
/// <typeparam name="TObject">资源类型。</typeparam>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location) where TObject : Object;
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location, string packageName = "")
|
||||||
|
where TObject : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载子资源对象。
|
/// 同步加载子资源对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="assetInfo">资源信息。</param>
|
/// <param name="assetInfo">资源信息。</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo);
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 通过Tag加载资源对象集合。
|
/// 通过Tag加载资源对象集合。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="assetTag">资源标识。</param>
|
/// <param name="assetTag">资源标识。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源类型。</typeparam>
|
/// <typeparam name="T">资源类型。</typeparam>
|
||||||
/// <returns>资源对象集合。</returns>
|
/// <returns>资源对象集合。</returns>
|
||||||
UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag) where T : UnityEngine.Object;
|
UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag, string packageName = "") where T : UnityEngine.Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载资源。
|
/// 异步加载资源。
|
||||||
@@ -255,9 +280,11 @@ namespace TEngine
|
|||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>异步资源实例。</returns>
|
/// <returns>异步资源实例。</returns>
|
||||||
UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default, bool needInstance = true, bool needCache = false) where T : Object;
|
UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default,
|
||||||
|
bool needInstance = true, bool needCache = false, string packageName = "") where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载游戏物体。
|
/// 异步加载游戏物体。
|
||||||
@@ -265,8 +292,10 @@ namespace TEngine
|
|||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
UniTask<GameObject> LoadGameObjectAsync(string location, CancellationToken cancellationToken = default, bool needCache = false);
|
UniTask<GameObject> LoadGameObjectAsync(string location, CancellationToken cancellationToken = default,
|
||||||
|
bool needCache = false, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载游戏物体。
|
/// 异步加载游戏物体。
|
||||||
@@ -275,16 +304,20 @@ namespace TEngine
|
|||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent, CancellationToken cancellationToken = default, bool needCache = false);
|
UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent,
|
||||||
|
CancellationToken cancellationToken = default, bool needCache = false, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载原生文件。
|
/// 异步加载原生文件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location, CancellationToken cancellationToken = default);
|
UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location,
|
||||||
|
CancellationToken cancellationToken = default, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载子文件。
|
/// 异步加载子文件。
|
||||||
@@ -292,32 +325,38 @@ namespace TEngine
|
|||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="assetName">子资源名称。</param>
|
/// <param name="assetName">子资源名称。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
UniTask<T> LoadSubAssetAsync<T>(string location, string assetName, CancellationToken cancellationToken = default) where T : Object;
|
UniTask<T> LoadSubAssetAsync<T>(string location, string assetName,
|
||||||
|
CancellationToken cancellationToken = default, string packageName = "") where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步加载所有子文件。
|
/// 异步加载所有子文件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
UniTask<T[]> LoadAllSubAssetAsync<T>(string location, CancellationToken cancellationToken = default) where T : Object;
|
UniTask<T[]> LoadAllSubAssetAsync<T>(string location, CancellationToken cancellationToken = default,
|
||||||
|
string packageName = "") where T : Object;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 放入预加载对象。
|
/// 放入预加载对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="assetObject">预加载对象。</param>
|
/// <param name="assetObject">预加载对象。</param>
|
||||||
public void PushPreLoadAsset(string location, Object assetObject);
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public void PushPreLoadAsset(string location, Object assetObject, string packageName = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取预加载的实例对象。
|
/// 获取预加载的实例对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>预加载对象。</returns>
|
/// <returns>预加载对象。</returns>
|
||||||
public T GetPreLoadAsset<T>(string location) where T : Object;
|
public T GetPreLoadAsset<T>(string location, string packageName = "") where T : Object;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -19,6 +19,7 @@ namespace TEngine
|
|||||||
}
|
}
|
||||||
|
|
||||||
private readonly string _tag;
|
private readonly string _tag;
|
||||||
|
private readonly string _packageName; // 指定资源包的名称
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
private List<AssetOperationHandle> _handles;
|
private List<AssetOperationHandle> _handles;
|
||||||
|
|
||||||
@@ -28,9 +29,10 @@ namespace TEngine
|
|||||||
public List<TObject> AssetObjects { private set; get; }
|
public List<TObject> AssetObjects { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
public LoadAssetsByTagOperation(string tag)
|
public LoadAssetsByTagOperation(string tag, string packageName)
|
||||||
{
|
{
|
||||||
_tag = tag;
|
_tag = tag;
|
||||||
|
_packageName = packageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnStart()
|
protected override void OnStart()
|
||||||
@@ -45,11 +47,32 @@ namespace TEngine
|
|||||||
|
|
||||||
if (_steps == ESteps.LoadAssets)
|
if (_steps == ESteps.LoadAssets)
|
||||||
{
|
{
|
||||||
AssetInfo[] assetInfos = YooAssets.GetAssetInfos(_tag);
|
AssetInfo[] assetInfos;
|
||||||
|
if (string.IsNullOrEmpty(_packageName))
|
||||||
|
{
|
||||||
|
assetInfos = YooAssets.GetAssetInfos(_tag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(_packageName);
|
||||||
|
assetInfos = package.GetAssetInfos(_tag);
|
||||||
|
}
|
||||||
|
|
||||||
_handles = new List<AssetOperationHandle>(assetInfos.Length);
|
_handles = new List<AssetOperationHandle>(assetInfos.Length);
|
||||||
|
|
||||||
foreach (var assetInfo in assetInfos)
|
foreach (var assetInfo in assetInfos)
|
||||||
{
|
{
|
||||||
var handle = YooAssets.LoadAssetAsync(assetInfo);
|
AssetOperationHandle handle;
|
||||||
|
if (string.IsNullOrEmpty(_packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadAssetAsync(assetInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(_packageName);
|
||||||
|
handle = package.LoadAssetAsync(assetInfo);
|
||||||
|
}
|
||||||
|
|
||||||
_handles.Add(handle);
|
_handles.Add(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +124,7 @@ namespace TEngine
|
|||||||
SetFinish(true);
|
SetFinish(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetFinish(bool succeed, string error = "")
|
private void SetFinish(bool succeed, string error = "")
|
||||||
{
|
{
|
||||||
Error = error;
|
Error = error;
|
||||||
|
@@ -101,9 +101,9 @@ namespace TEngine
|
|||||||
|
|
||||||
internal override void Shutdown()
|
internal override void Shutdown()
|
||||||
{
|
{
|
||||||
ReleasePreLoadAssets(isShutDown:true);
|
ReleasePreLoadAssets(isShutDown: true);
|
||||||
#if !UNITY_WEBGL
|
#if !UNITY_WEBGL
|
||||||
YooAssets.Destroy();
|
YooAssets.Destroy();
|
||||||
#endif
|
#endif
|
||||||
ResourcePool.Destroy();
|
ResourcePool.Destroy();
|
||||||
}
|
}
|
||||||
@@ -120,6 +120,7 @@ namespace TEngine
|
|||||||
handle = null;
|
handle = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iter.Dispose();
|
iter.Dispose();
|
||||||
_releaseMaps.Clear();
|
_releaseMaps.Clear();
|
||||||
|
|
||||||
@@ -133,10 +134,12 @@ namespace TEngine
|
|||||||
handle = null;
|
handle = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iter.Dispose();
|
iter.Dispose();
|
||||||
_operationHandlesMaps.Clear();
|
_operationHandlesMaps.Clear();
|
||||||
|
|
||||||
_arcCacheTable = new ArcCacheTable<string, AssetOperationHandle>(ARCTableCapacity, OnAddAsset, OnRemoveAsset);
|
_arcCacheTable =
|
||||||
|
new ArcCacheTable<string, AssetOperationHandle>(ARCTableCapacity, OnAddAsset, OnRemoveAsset);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -205,25 +208,47 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源类型。</typeparam>
|
/// <typeparam name="T">资源类型。</typeparam>
|
||||||
/// <returns>资源句柄。</returns>
|
/// <returns>资源句柄。</returns>
|
||||||
private AssetOperationHandle GetHandleSync<T>(string location, bool needCache = false) where T : Object
|
private AssetOperationHandle GetHandleSync<T>(string location, bool needCache = false, string packageName = "")
|
||||||
|
where T : Object
|
||||||
{
|
{
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
return YooAssets.LoadAssetSync<T>(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.LoadAssetSync<T>(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.LoadAssetSync<T>(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 缓存key
|
||||||
|
var cacheKey = string.IsNullOrEmpty(packageName) || packageName.Equals(PackageName)
|
||||||
|
? location
|
||||||
|
: $"{packageName}/{location}";
|
||||||
|
|
||||||
AssetOperationHandle handle = null;
|
AssetOperationHandle handle = null;
|
||||||
// 尝试从从ARC缓存表取出对象。
|
// 尝试从从ARC缓存表取出对象。
|
||||||
handle = _arcCacheTable.GetCache(location);
|
handle = _arcCacheTable.GetCache(cacheKey);
|
||||||
|
|
||||||
if (handle == null)
|
if (handle == null)
|
||||||
{
|
{
|
||||||
handle = YooAssets.LoadAssetSync<T>(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadAssetSync<T>(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
handle = package.LoadAssetSync<T>(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对象推入ARC缓存表。
|
// 对象推入ARC缓存表。
|
||||||
_arcCacheTable.PutCache(location, handle);
|
_arcCacheTable.PutCache(cacheKey, handle);
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,25 +257,47 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源类型。</typeparam>
|
/// <typeparam name="T">资源类型。</typeparam>
|
||||||
/// <returns>资源句柄。</returns>
|
/// <returns>资源句柄。</returns>
|
||||||
private AssetOperationHandle GetHandleAsync<T>(string location, bool needCache = false) where T : Object
|
private AssetOperationHandle GetHandleAsync<T>(string location, bool needCache = false, string packageName = "")
|
||||||
|
where T : Object
|
||||||
{
|
{
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
return YooAssets.LoadAssetAsync<T>(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.LoadAssetAsync<T>(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.LoadAssetAsync<T>(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 缓存key
|
||||||
|
var cacheKey = string.IsNullOrEmpty(packageName) || packageName.Equals(PackageName)
|
||||||
|
? location
|
||||||
|
: $"{packageName}/{location}";
|
||||||
|
|
||||||
AssetOperationHandle handle = null;
|
AssetOperationHandle handle = null;
|
||||||
// 尝试从从ARC缓存表取出对象。
|
// 尝试从从ARC缓存表取出对象。
|
||||||
handle = _arcCacheTable.GetCache(location);
|
handle = _arcCacheTable.GetCache(cacheKey);
|
||||||
|
|
||||||
if (handle == null)
|
if (handle == null)
|
||||||
{
|
{
|
||||||
handle = YooAssets.LoadAssetAsync<T>(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadAssetAsync<T>(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
handle = package.LoadAssetAsync<T>(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对象推入ARC缓存表。
|
// 对象推入ARC缓存表。
|
||||||
_arcCacheTable.PutCache(location, handle);
|
_arcCacheTable.PutCache(cacheKey, handle);
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,7 +324,8 @@ namespace TEngine
|
|||||||
|
|
||||||
_releaseMaps ??= new Dictionary<string, AssetOperationHandle>(ARCTableCapacity);
|
_releaseMaps ??= new Dictionary<string, AssetOperationHandle>(ARCTableCapacity);
|
||||||
_operationHandlesMaps ??= new Dictionary<string, AssetOperationHandle>(ARCTableCapacity);
|
_operationHandlesMaps ??= new Dictionary<string, AssetOperationHandle>(ARCTableCapacity);
|
||||||
_arcCacheTable ??= new ArcCacheTable<string, AssetOperationHandle>(ARCTableCapacity, OnAddAsset, OnRemoveAsset);
|
_arcCacheTable ??=
|
||||||
|
new ArcCacheTable<string, AssetOperationHandle>(ARCTableCapacity, OnAddAsset, OnRemoveAsset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -402,19 +450,29 @@ namespace TEngine
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 检查资源是否存在。
|
public HasAssetResult HasAsset(string location, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">要检查资源的名称。</param>
|
|
||||||
/// <returns>检查资源是否存在的结果。</returns>
|
|
||||||
public HasAssetResult HasAsset(string location)
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(location))
|
if (string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
throw new GameFrameworkException("Asset name is invalid.");
|
throw new GameFrameworkException("Asset name is invalid.");
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetInfo assetInfo = YooAssets.GetAssetInfo(location);
|
AssetInfo assetInfo;
|
||||||
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
assetInfo = YooAssets.GetAssetInfo(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
if (package == null)
|
||||||
|
{
|
||||||
|
throw new GameFrameworkException($"The package does not exist. Package Name :{packageName}");
|
||||||
|
}
|
||||||
|
|
||||||
|
assetInfo = package.GetAssetInfo(location);
|
||||||
|
}
|
||||||
|
|
||||||
if (!CheckLocationValid(location))
|
if (!CheckLocationValid(location))
|
||||||
{
|
{
|
||||||
@@ -445,74 +503,95 @@ namespace TEngine
|
|||||||
|
|
||||||
#region 资源信息
|
#region 资源信息
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 是否需要从远端更新下载。
|
public bool IsNeedDownloadFromRemote(string location, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">资源的定位地址</param>
|
|
||||||
public bool IsNeedDownloadFromRemote(string location)
|
|
||||||
{
|
{
|
||||||
return YooAssets.IsNeedDownloadFromRemote(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.IsNeedDownloadFromRemote(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.IsNeedDownloadFromRemote(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 是否需要从远端更新下载。
|
public bool IsNeedDownloadFromRemote(AssetInfo assetInfo, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="assetInfo">资源信息。</param>
|
|
||||||
public bool IsNeedDownloadFromRemote(AssetInfo assetInfo)
|
|
||||||
{
|
{
|
||||||
return YooAssets.IsNeedDownloadFromRemote(assetInfo);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.IsNeedDownloadFromRemote(assetInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.IsNeedDownloadFromRemote(assetInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 获取资源信息列表。
|
public AssetInfo[] GetAssetInfos(string tag, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="tag">资源标签。</param>
|
|
||||||
/// <returns>资源信息列表。</returns>
|
|
||||||
public AssetInfo[] GetAssetInfos(string tag)
|
|
||||||
{
|
{
|
||||||
return YooAssets.GetAssetInfos(tag);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.GetAssetInfos(tag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.GetAssetInfos(tag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 获取资源信息列表。
|
public AssetInfo[] GetAssetInfos(string[] tags, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="tags">资源标签列表。</param>
|
|
||||||
/// <returns>资源信息列表。</returns>
|
|
||||||
public AssetInfo[] GetAssetInfos(string[] tags)
|
|
||||||
{
|
{
|
||||||
return YooAssets.GetAssetInfos(tags);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.GetAssetInfos(tags);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.GetAssetInfos(tags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 获取资源信息。
|
public AssetInfo GetAssetInfo(string location, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <returns>资源信息。</returns>
|
|
||||||
public AssetInfo GetAssetInfo(string location)
|
|
||||||
{
|
{
|
||||||
return YooAssets.GetAssetInfo(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.GetAssetInfo(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.GetAssetInfo(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 检查资源定位地址是否有效。
|
public bool CheckLocationValid(string location, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
public bool CheckLocationValid(string location)
|
|
||||||
{
|
{
|
||||||
return YooAssets.CheckLocationValid(location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.CheckLocationValid(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.CheckLocationValid(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载资源。
|
public T LoadAsset<T>(string location, bool needInstance = true, bool needCache = false,
|
||||||
/// </summary>
|
string packageName = "") where T : Object
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>资源实例。</returns>
|
|
||||||
public T LoadAsset<T>(string location, bool needInstance = true, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(location))
|
if (string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
@@ -520,7 +599,7 @@ namespace TEngine
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetOperationHandle handle = GetHandleSync<T>(location, needCache);
|
AssetOperationHandle handle = GetHandleSync<T>(location, needCache, packageName);
|
||||||
|
|
||||||
if (typeof(T) == typeof(GameObject))
|
if (typeof(T) == typeof(GameObject))
|
||||||
{
|
{
|
||||||
@@ -529,30 +608,26 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync();
|
GameObject gameObject = handle.InstantiateSync();
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject as T;
|
return gameObject as T;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
T ret = handle.AssetObject as T;
|
T ret = handle.AssetObject as T;
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载资源。
|
public T LoadAsset<T>(string location, Transform parent, bool needInstance = true, bool needCache = false,
|
||||||
/// </summary>
|
string packageName = "")
|
||||||
/// <param name="location">资源的定位地址。</param>
|
where T : Object
|
||||||
/// <param name="parent">父节点位置。</param>
|
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>资源实例。</returns>
|
|
||||||
public T LoadAsset<T>(string location, Transform parent, bool needInstance = true, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(location))
|
if (string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
@@ -560,7 +635,7 @@ namespace TEngine
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetOperationHandle handle = GetHandleSync<T>(location, needCache);
|
AssetOperationHandle handle = GetHandleSync<T>(location, needCache, packageName: packageName);
|
||||||
|
|
||||||
if (typeof(T) == typeof(GameObject))
|
if (typeof(T) == typeof(GameObject))
|
||||||
{
|
{
|
||||||
@@ -569,31 +644,27 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync(parent);
|
GameObject gameObject = handle.InstantiateSync(parent);
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject as T;
|
return gameObject as T;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
T ret = handle.AssetObject as T;
|
T ret = handle.AssetObject as T;
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载资源。
|
public T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false,
|
||||||
/// </summary>
|
string packageName = "") where T : Object
|
||||||
/// <param name="handle">资源操作句柄。</param>
|
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>资源实例。</returns>
|
|
||||||
public T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
handle = GetHandleSync<T>(location, needCache);
|
handle = GetHandleSync<T>(location, needCache, packageName: packageName);
|
||||||
if (string.IsNullOrEmpty(location))
|
if (string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
Log.Error("Asset name is invalid.");
|
Log.Error("Asset name is invalid.");
|
||||||
@@ -605,31 +676,26 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync();
|
GameObject gameObject = handle.InstantiateSync();
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject as T;
|
return gameObject as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
T ret = handle.AssetObject as T;
|
T ret = handle.AssetObject as T;
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载资源。
|
public T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle,
|
||||||
/// </summary>
|
bool needCache = false, string packageName = "") where T : Object
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <param name="handle">资源操作句柄。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <param name="parent">父节点位置。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>资源实例。</returns>
|
|
||||||
public T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
handle = GetHandleSync<T>(location, needCache);
|
handle = GetHandleSync<T>(location, needCache, packageName: packageName);
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(location))
|
if (string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
@@ -642,81 +708,78 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync(parent);
|
GameObject gameObject = handle.InstantiateSync(parent);
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject as T;
|
return gameObject as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
T ret = handle.AssetObject as T;
|
T ret = handle.AssetObject as T;
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载资源并获取句柄。
|
public AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false,
|
||||||
/// </summary>
|
string packageName = "") where T : Object
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>同步加载资源句柄。</returns>
|
|
||||||
public AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
return GetHandleSync<T>(location, needCache);
|
return GetHandleSync<T>(location, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载资源并获取句柄。
|
public AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false,
|
||||||
/// </summary>
|
string packageName = "") where T : Object
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
|
||||||
/// <returns>异步加载资源句柄。</returns>
|
|
||||||
public AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
return GetHandleAsync<T>(location, needCache);
|
return GetHandleAsync<T>(location, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载子资源对象
|
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location, string packageName = "")
|
||||||
/// </summary>
|
where TObject : Object
|
||||||
/// <typeparam name="TObject">资源类型。</typeparam>
|
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location) where TObject : Object
|
|
||||||
{
|
{
|
||||||
return YooAssets.LoadSubAssetsSync<TObject>(location: location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.LoadSubAssetsSync<TObject>(location: location);
|
||||||
|
}
|
||||||
|
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.LoadSubAssetsSync<TObject>(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载子资源对象
|
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location, string packageName = "")
|
||||||
/// </summary>
|
where TObject : Object
|
||||||
/// <typeparam name="TObject">资源类型。</typeparam>
|
|
||||||
/// <param name="location">资源的定位地址。</param>
|
|
||||||
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location) where TObject : Object
|
|
||||||
{
|
{
|
||||||
return YooAssets.LoadSubAssetsAsync<TObject>(location: location);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.LoadSubAssetsAsync<TObject>(location: location);
|
||||||
|
}
|
||||||
|
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.LoadSubAssetsAsync<TObject>(location: location);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 同步加载子资源对象
|
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="assetInfo">资源信息。</param>
|
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo)
|
|
||||||
{
|
{
|
||||||
return YooAssets.LoadSubAssetsSync(assetInfo);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
return YooAssets.LoadSubAssetsSync(assetInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
return package.LoadSubAssetsSync(assetInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 通过Tag加载资源对象集合。
|
public async UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag, string packageName = "")
|
||||||
/// </summary>
|
where T : UnityEngine.Object
|
||||||
/// <param name="assetTag">资源标识。</param>
|
|
||||||
/// <typeparam name="T">资源类型。</typeparam>
|
|
||||||
/// <returns>资源对象集合。</returns>
|
|
||||||
public async UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag) where T : UnityEngine.Object
|
|
||||||
{
|
{
|
||||||
LoadAssetsByTagOperation<T> operation = new LoadAssetsByTagOperation<T>(assetTag);
|
LoadAssetsByTagOperation<T> operation = new LoadAssetsByTagOperation<T>(assetTag, packageName);
|
||||||
YooAssets.StartOperation(operation);
|
YooAssets.StartOperation(operation);
|
||||||
await operation.ToUniTask();
|
await operation.ToUniTask();
|
||||||
List<T> assetObjects = operation.AssetObjects;
|
List<T> assetObjects = operation.AssetObjects;
|
||||||
@@ -724,19 +787,14 @@ namespace TEngine
|
|||||||
return assetObjects;
|
return assetObjects;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载资源实例。
|
public async UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default,
|
||||||
/// </summary>
|
bool needInstance = true, bool needCache = false, string packageName = "") where T : Object
|
||||||
/// <param name="location">要加载的实例名称。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <returns>资源实实例。</returns>
|
|
||||||
public async UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default, bool needInstance = true, bool needCache = false) where T : Object
|
|
||||||
{
|
{
|
||||||
AssetOperationHandle handle = LoadAssetAsyncHandle<T>(location, needCache);
|
AssetOperationHandle handle = LoadAssetAsyncHandle<T>(location, needCache, packageName: packageName);
|
||||||
|
|
||||||
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
|
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken)
|
||||||
|
.SuppressCancellationThrow();
|
||||||
|
|
||||||
if (cancelOrFailed)
|
if (cancelOrFailed)
|
||||||
{
|
{
|
||||||
@@ -750,32 +808,31 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync();
|
GameObject gameObject = handle.InstantiateSync();
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject as T;
|
return gameObject as T;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
T ret = handle.AssetObject as T;
|
T ret = handle.AssetObject as T;
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载游戏物体。
|
public async UniTask<GameObject> LoadGameObjectAsync(string location,
|
||||||
/// </summary>
|
CancellationToken cancellationToken = default, bool needCache = false, string packageName = "")
|
||||||
/// <param name="location">要加载的游戏物体名称。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
|
||||||
public async UniTask<GameObject> LoadGameObjectAsync(string location, CancellationToken cancellationToken = default, bool needCache = false)
|
|
||||||
{
|
{
|
||||||
AssetOperationHandle handle = LoadAssetAsyncHandle<GameObject>(location, needCache);
|
AssetOperationHandle handle =
|
||||||
|
LoadAssetAsyncHandle<GameObject>(location, needCache, packageName: packageName);
|
||||||
|
|
||||||
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
|
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken)
|
||||||
|
.SuppressCancellationThrow();
|
||||||
|
|
||||||
if (cancelOrFailed)
|
if (cancelOrFailed)
|
||||||
{
|
{
|
||||||
@@ -785,22 +842,18 @@ namespace TEngine
|
|||||||
GameObject gameObject = handle.InstantiateSync();
|
GameObject gameObject = handle.InstantiateSync();
|
||||||
if (!needCache)
|
if (!needCache)
|
||||||
{
|
{
|
||||||
AssetReference.BindAssetReference(gameObject, handle, location);
|
AssetReference.BindAssetReference(gameObject, handle, location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameObject;
|
return gameObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载游戏物体。
|
public async UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent,
|
||||||
/// </summary>
|
CancellationToken cancellationToken = default, bool needCache = false, string packageName = "")
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <param name="parent">父节点位置。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
|
||||||
public async UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent, CancellationToken cancellationToken = default, bool needCache = false)
|
|
||||||
{
|
{
|
||||||
GameObject gameObject = await LoadGameObjectAsync(location, cancellationToken, needCache);
|
GameObject gameObject =
|
||||||
|
await LoadGameObjectAsync(location, cancellationToken, needCache, packageName: packageName);
|
||||||
if (parent != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
gameObject.transform.SetParent(parent);
|
gameObject.transform.SetParent(parent);
|
||||||
@@ -813,103 +866,116 @@ namespace TEngine
|
|||||||
return gameObject;
|
return gameObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载原生文件。
|
public async UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location,
|
||||||
/// </summary>
|
CancellationToken cancellationToken = default, string packageName = "")
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <returns>原生文件资源实例操作句柄。</returns>
|
|
||||||
/// <remarks>需要自行释放资源句柄(RawFileOperationHandle)。</remarks>
|
|
||||||
public async UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location, CancellationToken cancellationToken = default)
|
|
||||||
{
|
{
|
||||||
RawFileOperationHandle handle = YooAssets.LoadRawFileAsync(location);
|
RawFileOperationHandle handle;
|
||||||
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadRawFileAsync(location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
handle = package.LoadRawFileAsync(location);
|
||||||
|
}
|
||||||
|
|
||||||
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
|
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken)
|
||||||
|
.SuppressCancellationThrow();
|
||||||
|
|
||||||
return cancelOrFailed ? null : handle;
|
return cancelOrFailed ? null : handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载子文件。
|
public async UniTask<T> LoadSubAssetAsync<T>(string location, string assetName,
|
||||||
/// </summary>
|
CancellationToken cancellationToken = default, string packageName = "") where T : Object
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <param name="assetName">子资源名称。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
|
||||||
/// <returns>原生文件资源实例。</returns>
|
|
||||||
public async UniTask<T> LoadSubAssetAsync<T>(string location, string assetName, CancellationToken cancellationToken = default) where T : Object
|
|
||||||
{
|
{
|
||||||
var assetInfo = GetAssetInfo(location);
|
var assetInfo = GetAssetInfo(location, packageName: packageName);
|
||||||
if (assetInfo == null)
|
if (assetInfo == null)
|
||||||
{
|
{
|
||||||
Log.Fatal($"AssetsInfo is null");
|
Log.Fatal($"AssetsInfo is null");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
SubAssetsOperationHandle handle = YooAssets.LoadSubAssetsAsync(assetInfo);
|
SubAssetsOperationHandle handle;
|
||||||
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadSubAssetsAsync(assetInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
handle = package.LoadSubAssetsAsync(assetInfo);
|
||||||
|
}
|
||||||
|
|
||||||
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
|
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken)
|
||||||
|
.SuppressCancellationThrow();
|
||||||
|
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
|
|
||||||
return cancelOrFailed ? null : handle.GetSubAssetObject<T>(assetName);
|
return cancelOrFailed ? null : handle.GetSubAssetObject<T>(assetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 异步加载子文件。
|
public async UniTask<T[]> LoadAllSubAssetAsync<T>(string location,
|
||||||
/// </summary>
|
CancellationToken cancellationToken = default, string packageName = "") where T : Object
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
|
||||||
/// <returns>原生文件资源实例。</returns>
|
|
||||||
public async UniTask<T[]> LoadAllSubAssetAsync<T>(string location, CancellationToken cancellationToken = default) where T : Object
|
|
||||||
{
|
{
|
||||||
var assetInfo = GetAssetInfo(location);
|
var assetInfo = GetAssetInfo(location, packageName: packageName);
|
||||||
if (assetInfo == null)
|
if (assetInfo == null)
|
||||||
{
|
{
|
||||||
Log.Fatal($"AssetsInfo is null");
|
Log.Fatal($"AssetsInfo is null");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
SubAssetsOperationHandle handle = YooAssets.LoadSubAssetsAsync(assetInfo);
|
SubAssetsOperationHandle handle;
|
||||||
|
if (string.IsNullOrEmpty(packageName))
|
||||||
|
{
|
||||||
|
handle = YooAssets.LoadSubAssetsAsync(assetInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
handle = package.LoadSubAssetsAsync(assetInfo);
|
||||||
|
}
|
||||||
|
|
||||||
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken).SuppressCancellationThrow();
|
bool cancelOrFailed = await handle.ToUniTask().AttachExternalCancellation(cancellationToken)
|
||||||
|
.SuppressCancellationThrow();
|
||||||
|
|
||||||
handle.Dispose();
|
handle.Dispose();
|
||||||
|
|
||||||
return cancelOrFailed ? null : handle.GetSubAssetObjects<T>();
|
return cancelOrFailed ? null : handle.GetSubAssetObjects<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 预加载
|
#region 预加载
|
||||||
|
|
||||||
private readonly Dictionary<string, Object> _preLoadMaps = new Dictionary<string, Object>();
|
private readonly Dictionary<string, Object> _preLoadMaps = new Dictionary<string, Object>();
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 放入预加载对象。
|
public void PushPreLoadAsset(string location, Object assetObject, string packageName = "")
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <param name="assetObject">预加载对象。</param>
|
|
||||||
public void PushPreLoadAsset(string location, Object assetObject)
|
|
||||||
{
|
{
|
||||||
if (_preLoadMaps.ContainsKey(location))
|
var cacheKey = string.IsNullOrEmpty(packageName) || packageName.Equals(PackageName)
|
||||||
|
? location
|
||||||
|
: $"{packageName}/{location}";
|
||||||
|
if (_preLoadMaps.ContainsKey(cacheKey))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_preLoadMaps.Add(location, assetObject);
|
|
||||||
|
_preLoadMaps.Add(cacheKey, assetObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc />
|
||||||
/// 获取预加载的实例对象。
|
public T GetPreLoadAsset<T>(string location, string packageName = "") where T : Object
|
||||||
/// </summary>
|
|
||||||
/// <param name="location">资源定位地址。</param>
|
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
|
||||||
/// <returns>预加载对象。</returns>
|
|
||||||
public T GetPreLoadAsset<T>(string location) where T : Object
|
|
||||||
{
|
{
|
||||||
if (_preLoadMaps.TryGetValue(location,out Object assetObject))
|
var cacheKey = string.IsNullOrEmpty(packageName) || packageName.Equals(PackageName)
|
||||||
|
? location
|
||||||
|
: $"{packageName}/{location}";
|
||||||
|
if (_preLoadMaps.TryGetValue(cacheKey, out Object assetObject))
|
||||||
{
|
{
|
||||||
return assetObject as T;
|
return assetObject as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -927,8 +993,10 @@ namespace TEngine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_preLoadMaps.Clear();
|
_preLoadMaps.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -239,10 +239,13 @@ namespace TEngine
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取当前资源包版本。
|
/// 获取当前资源包版本。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源包版本。</returns>
|
/// <returns>资源包版本。</returns>
|
||||||
public string GetPackageVersion()
|
public string GetPackageVersion(string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
var package = string.IsNullOrEmpty(packageName)
|
||||||
|
? YooAssets.GetPackage(this.packageName)
|
||||||
|
: YooAssets.GetPackage(packageName);
|
||||||
if (package == null)
|
if (package == null)
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
@@ -256,10 +259,14 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="appendTimeTicks">请求URL是否需要带时间戳。</param>
|
/// <param name="appendTimeTicks">请求URL是否需要带时间戳。</param>
|
||||||
/// <param name="timeout">超时时间。</param>
|
/// <param name="timeout">超时时间。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>请求远端包裹的最新版本操作句柄。</returns>
|
/// <returns>请求远端包裹的最新版本操作句柄。</returns>
|
||||||
public UpdatePackageVersionOperation UpdatePackageVersionAsync(bool appendTimeTicks = false, int timeout = 60)
|
public UpdatePackageVersionOperation UpdatePackageVersionAsync(bool appendTimeTicks = false, int timeout = 60,
|
||||||
|
string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
var package = string.IsNullOrEmpty(packageName)
|
||||||
|
? YooAssets.GetPackage(this.packageName)
|
||||||
|
: YooAssets.GetPackage(packageName);
|
||||||
return package.UpdatePackageVersionAsync(appendTimeTicks, timeout);
|
return package.UpdatePackageVersionAsync(appendTimeTicks, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,37 +276,57 @@ namespace TEngine
|
|||||||
/// <param name="packageVersion">更新的包裹版本</param>
|
/// <param name="packageVersion">更新的包裹版本</param>
|
||||||
/// <param name="autoSaveVersion">更新成功后自动保存版本号,作为下次初始化的版本。</param>
|
/// <param name="autoSaveVersion">更新成功后自动保存版本号,作为下次初始化的版本。</param>
|
||||||
/// <param name="timeout">超时时间(默认值:60秒)</param>
|
/// <param name="timeout">超时时间(默认值:60秒)</param>
|
||||||
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveVersion = true, int timeout = 60)
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion,
|
||||||
|
bool autoSaveVersion = true, int timeout = 60, string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
var package = string.IsNullOrEmpty(packageName)
|
||||||
|
? YooAssets.GetPackage(this.packageName)
|
||||||
|
: YooAssets.GetPackage(packageName);
|
||||||
return package.UpdatePackageManifestAsync(packageVersion, autoSaveVersion, timeout);
|
return package.UpdatePackageManifestAsync(packageVersion, autoSaveVersion, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建资源下载器,用于下载当前资源版本所有的资源包文件。
|
/// 创建资源下载器,用于下载当前资源版本所有的资源包文件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ResourceDownloaderOperation CreateResourceDownloader()
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public ResourceDownloaderOperation CreateResourceDownloader(string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
if (string.IsNullOrEmpty(packageName))
|
||||||
Downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain);
|
{
|
||||||
return Downloader;
|
var package = YooAssets.GetPackage(this.packageName);
|
||||||
|
Downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain);
|
||||||
|
return Downloader;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var package = YooAssets.GetPackage(packageName);
|
||||||
|
Downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain);
|
||||||
|
return Downloader;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清理包裹未使用的缓存文件。
|
/// 清理包裹未使用的缓存文件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ClearUnusedCacheFilesOperation ClearUnusedCacheFilesAsync()
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public ClearUnusedCacheFilesOperation ClearUnusedCacheFilesAsync(string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
var package = string.IsNullOrEmpty(packageName)
|
||||||
|
? YooAssets.GetPackage(this.packageName)
|
||||||
|
: YooAssets.GetPackage(packageName);
|
||||||
return package.ClearUnusedCacheFilesAsync();
|
return package.ClearUnusedCacheFilesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清理沙盒路径。
|
/// 清理沙盒路径。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void ClearSandbox()
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public void ClearSandbox(string packageName = "")
|
||||||
{
|
{
|
||||||
var package = YooAssets.GetPackage(packageName);
|
var package = string.IsNullOrEmpty(packageName)
|
||||||
|
? YooAssets.GetPackage(this.packageName)
|
||||||
|
: YooAssets.GetPackage(packageName);
|
||||||
package.ClearPackageSandbox();
|
package.ClearPackageSandbox();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,10 +368,11 @@ namespace TEngine
|
|||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
m_LastUnloadUnusedAssetsOperationElapseSeconds += GameTime.unscaledDeltaTime;
|
m_LastUnloadUnusedAssetsOperationElapseSeconds += GameTime.unscaledDeltaTime;
|
||||||
if (m_AsyncOperation == null &&
|
if (m_AsyncOperation == null &&
|
||||||
(m_ForceUnloadUnusedAssets ||
|
(m_ForceUnloadUnusedAssets ||
|
||||||
m_LastUnloadUnusedAssetsOperationElapseSeconds >= maxUnloadUnusedAssetsInterval ||
|
m_LastUnloadUnusedAssetsOperationElapseSeconds >= maxUnloadUnusedAssetsInterval ||
|
||||||
m_PreorderUnloadUnusedAssets && m_LastUnloadUnusedAssetsOperationElapseSeconds >= minUnloadUnusedAssetsInterval))
|
m_PreorderUnloadUnusedAssets &&
|
||||||
|
m_LastUnloadUnusedAssetsOperationElapseSeconds >= minUnloadUnusedAssetsInterval))
|
||||||
{
|
{
|
||||||
Log.Info("Unload unused assets...");
|
Log.Info("Unload unused assets...");
|
||||||
m_ForceUnloadUnusedAssets = false;
|
m_ForceUnloadUnusedAssets = false;
|
||||||
@@ -370,10 +398,11 @@ namespace TEngine
|
|||||||
/// 检查资源是否存在。
|
/// 检查资源是否存在。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">要检查资源的名称。</param>
|
/// <param name="location">要检查资源的名称。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>检查资源是否存在的结果。</returns>
|
/// <returns>检查资源是否存在的结果。</returns>
|
||||||
public HasAssetResult HasAsset(string location)
|
public HasAssetResult HasAsset(string location, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.HasAsset(location);
|
return m_ResourceManager.HasAsset(location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -389,59 +418,65 @@ namespace TEngine
|
|||||||
/// 是否需要从远端更新下载。
|
/// 是否需要从远端更新下载。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsNeedDownloadFromRemote(string location)
|
public bool IsNeedDownloadFromRemote(string location, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.IsNeedDownloadFromRemote(location);
|
return m_ResourceManager.IsNeedDownloadFromRemote(location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否需要从远端更新下载。
|
/// 是否需要从远端更新下载。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="assetInfo">资源信息。</param>
|
/// <param name="assetInfo">资源信息。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsNeedDownloadFromRemote(AssetInfo assetInfo)
|
public bool IsNeedDownloadFromRemote(AssetInfo assetInfo, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.IsNeedDownloadFromRemote(assetInfo);
|
return m_ResourceManager.IsNeedDownloadFromRemote(assetInfo, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息列表。
|
/// 获取资源信息列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="resTag">资源标签。</param>
|
/// <param name="resTag">资源标签。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息列表。</returns>
|
/// <returns>资源信息列表。</returns>
|
||||||
public AssetInfo[] GetAssetInfos(string resTag)
|
public AssetInfo[] GetAssetInfos(string resTag, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.GetAssetInfos(resTag);
|
return m_ResourceManager.GetAssetInfos(resTag, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息列表。
|
/// 获取资源信息列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tags">资源标签列表。</param>
|
/// <param name="tags">资源标签列表。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息列表。</returns>
|
/// <returns>资源信息列表。</returns>
|
||||||
public AssetInfo[] GetAssetInfos(string[] tags)
|
public AssetInfo[] GetAssetInfos(string[] tags, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.GetAssetInfos(tags);
|
return m_ResourceManager.GetAssetInfos(tags, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源信息。
|
/// 获取资源信息。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>资源信息。</returns>
|
/// <returns>资源信息。</returns>
|
||||||
public AssetInfo GetAssetInfo(string location)
|
public AssetInfo GetAssetInfo(string location, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.GetAssetInfo(location);
|
return m_ResourceManager.GetAssetInfo(location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查资源定位地址是否有效。
|
/// 检查资源定位地址是否有效。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址</param>
|
/// <param name="location">资源的定位地址</param>
|
||||||
public bool CheckLocationValid(string location)
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public bool CheckLocationValid(string location, string packageName = "")
|
||||||
{
|
{
|
||||||
return m_ResourceManager.CheckLocationValid(location);
|
return m_ResourceManager.CheckLocationValid(location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -450,11 +485,13 @@ namespace TEngine
|
|||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
public T LoadAsset<T>(string location, bool needInstance = true, bool needCache = false) where T : UnityEngine.Object
|
public T LoadAsset<T>(string location, bool needInstance = true, bool needCache = false,
|
||||||
|
string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAsset<T>(location, needInstance, needCache);
|
return m_ResourceManager.LoadAsset<T>(location, needInstance, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -464,11 +501,13 @@ namespace TEngine
|
|||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
public T LoadAsset<T>(string location, Transform parent, bool needInstance = true, bool needCache = false) where T : UnityEngine.Object
|
public T LoadAsset<T>(string location, Transform parent, bool needInstance = true, bool needCache = false,
|
||||||
|
string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAsset<T>(location, parent, needInstance, needCache);
|
return m_ResourceManager.LoadAsset<T>(location, parent, needInstance, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -477,11 +516,13 @@ namespace TEngine
|
|||||||
/// <param name="handle">资源操作句柄。</param>
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
public T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false) where T : UnityEngine.Object
|
public T LoadAsset<T>(string location, out AssetOperationHandle handle, bool needCache = false,
|
||||||
|
string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAsset<T>(location, out handle, needCache);
|
return m_ResourceManager.LoadAsset<T>(location, out handle, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -491,11 +532,13 @@ namespace TEngine
|
|||||||
/// <param name="handle">资源操作句柄。</param>
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>资源实例。</returns>
|
/// <returns>资源实例。</returns>
|
||||||
public T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle, bool needCache = false) where T : UnityEngine.Object
|
public T LoadAsset<T>(string location, Transform parent, out AssetOperationHandle handle,
|
||||||
|
bool needCache = false, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAsset<T>(location, parent, out handle, needCache);
|
return m_ResourceManager.LoadAsset<T>(location, parent, out handle, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -504,10 +547,13 @@ namespace TEngine
|
|||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="callback">回调函数。</param>
|
/// <param name="callback">回调函数。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
public void LoadAssetAsync<T>(string location, Action<AssetOperationHandle> callback = null, bool needCache = false) where T : UnityEngine.Object
|
public void LoadAssetAsync<T>(string location, Action<AssetOperationHandle> callback = null,
|
||||||
|
bool needCache = false, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
AssetOperationHandle handle = m_ResourceManager.LoadAssetAsyncHandle<T>(location, needCache);
|
AssetOperationHandle handle =
|
||||||
|
m_ResourceManager.LoadAssetAsyncHandle<T>(location, needCache, packageName: packageName);
|
||||||
|
|
||||||
handle.Completed += callback;
|
handle.Completed += callback;
|
||||||
}
|
}
|
||||||
@@ -517,11 +563,13 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>同步加载资源句柄。</returns>
|
/// <returns>同步加载资源句柄。</returns>
|
||||||
public AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false) where T : UnityEngine.Object
|
public AssetOperationHandle LoadAssetGetOperation<T>(string location, bool needCache = false,
|
||||||
|
string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAssetGetOperation<T>(location, needCache);
|
return m_ResourceManager.LoadAssetGetOperation<T>(location, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -529,11 +577,13 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址。</param>
|
/// <param name="location">资源的定位地址。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>异步加载资源句柄。</returns>
|
/// <returns>异步加载资源句柄。</returns>
|
||||||
public AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false) where T : UnityEngine.Object
|
public AssetOperationHandle LoadAssetAsyncHandle<T>(string location, bool needCache = false,
|
||||||
|
string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadAssetAsyncHandle<T>(location, needCache);
|
return m_ResourceManager.LoadAssetAsyncHandle<T>(location, needCache, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -542,9 +592,11 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="TObject">资源类型</typeparam>
|
/// <typeparam name="TObject">资源类型</typeparam>
|
||||||
/// <param name="location">资源的定位地址</param>
|
/// <param name="location">资源的定位地址</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location) where TObject : UnityEngine.Object
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location, string packageName = "")
|
||||||
|
where TObject : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadSubAssetsSync<TObject>(location: location);
|
return m_ResourceManager.LoadSubAssetsSync<TObject>(location: location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -552,36 +604,41 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="TObject">资源类型</typeparam>
|
/// <typeparam name="TObject">资源类型</typeparam>
|
||||||
/// <param name="location">资源的定位地址</param>
|
/// <param name="location">资源的定位地址</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location) where TObject : UnityEngine.Object
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location, string packageName = "")
|
||||||
|
where TObject : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.LoadSubAssetsAsync<TObject>(location: location);
|
return m_ResourceManager.LoadSubAssetsAsync<TObject>(location: location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步加载子资源对象
|
/// 同步加载子资源对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源的定位地址</param>
|
/// <param name="location">资源的定位地址</param>
|
||||||
public SubAssetsOperationHandle LoadSubAssetsSync(string location)
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public SubAssetsOperationHandle LoadSubAssetsSync(string location, string packageName = "")
|
||||||
{
|
{
|
||||||
var assetInfo = GetAssetInfo(location);
|
var assetInfo = GetAssetInfo(location, packageName: packageName);
|
||||||
if (assetInfo == null)
|
if (assetInfo == null)
|
||||||
{
|
{
|
||||||
Log.Fatal($"AssetsInfo is null");
|
Log.Fatal($"AssetsInfo is null");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_ResourceManager.LoadSubAssetsSync(assetInfo);
|
return m_ResourceManager.LoadSubAssetsSync(assetInfo, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 通过Tag加载资源对象集合。
|
/// 通过Tag加载资源对象集合。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="assetTag">资源标识。</param>
|
/// <param name="assetTag">资源标识。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源类型。</typeparam>
|
/// <typeparam name="T">资源类型。</typeparam>
|
||||||
/// <returns>资源对象集合。</returns>
|
/// <returns>资源对象集合。</returns>
|
||||||
public async UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag) where T : UnityEngine.Object
|
public async UniTask<List<T>> LoadAssetsByTagAsync<T>(string assetTag, string packageName = "")
|
||||||
|
where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadAssetsByTagAsync<T>(assetTag);
|
return await m_ResourceManager.LoadAssetsByTagAsync<T>(assetTag, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -591,11 +648,14 @@ namespace TEngine
|
|||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needInstance">是否需要实例化。</param>
|
/// <param name="needInstance">是否需要实例化。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
/// <returns>异步资源实例。</returns>
|
/// <returns>异步资源实例。</returns>
|
||||||
public async UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default, bool needInstance = true, bool needCache = false) where T : UnityEngine.Object
|
public async UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default,
|
||||||
|
bool needInstance = true, bool needCache = false, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadAssetAsync<T>(location, cancellationToken, needInstance, needCache);
|
return await m_ResourceManager.LoadAssetAsync<T>(location, cancellationToken, needInstance, needCache,
|
||||||
|
packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -604,10 +664,13 @@ namespace TEngine
|
|||||||
/// <param name="location">要加载的游戏物体名称。</param>
|
/// <param name="location">要加载的游戏物体名称。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
public async UniTask<GameObject> LoadGameObjectAsync(string location, CancellationToken cancellationToken = default, bool needCache = false)
|
public async UniTask<GameObject> LoadGameObjectAsync(string location,
|
||||||
|
CancellationToken cancellationToken = default, bool needCache = false, string packageName = "")
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadGameObjectAsync(location, cancellationToken, needCache);
|
return await m_ResourceManager.LoadGameObjectAsync(location, cancellationToken, needCache,
|
||||||
|
packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -617,10 +680,13 @@ namespace TEngine
|
|||||||
/// <param name="parent">父节点位置。</param>
|
/// <param name="parent">父节点位置。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
/// <param name="needCache">是否需要缓存。</param>
|
/// <param name="needCache">是否需要缓存。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>异步游戏物体实例。</returns>
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
public async UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent, CancellationToken cancellationToken = default, bool needCache = false)
|
public async UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent,
|
||||||
|
CancellationToken cancellationToken = default, bool needCache = false, string packageName = "")
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadGameObjectAsync(location, parent, cancellationToken, needCache);
|
return await m_ResourceManager.LoadGameObjectAsync(location, parent, cancellationToken, needCache,
|
||||||
|
packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -628,10 +694,12 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
public async UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location, CancellationToken cancellationToken = default)
|
public async UniTask<RawFileOperationHandle> LoadRawAssetAsync(string location,
|
||||||
|
CancellationToken cancellationToken = default, string packageName = "")
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadRawAssetAsync(location, cancellationToken);
|
return await m_ResourceManager.LoadRawAssetAsync(location, cancellationToken, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -640,11 +708,14 @@ namespace TEngine
|
|||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="assetName">子资源名称。</param>
|
/// <param name="assetName">子资源名称。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
public async UniTask<T> LoadSubAssetAsync<T>(string location, string assetName, CancellationToken cancellationToken = default) where T : UnityEngine.Object
|
public async UniTask<T> LoadSubAssetAsync<T>(string location, string assetName,
|
||||||
|
CancellationToken cancellationToken = default, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadSubAssetAsync<T>(location, assetName, cancellationToken);
|
return await m_ResourceManager.LoadSubAssetAsync<T>(location, assetName, cancellationToken,
|
||||||
|
packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -652,34 +723,41 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="cancellationToken">取消操作Token。</param>
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
/// <returns>原生文件资源实例。</returns>
|
/// <returns>原生文件资源实例。</returns>
|
||||||
public async UniTask<T[]> LoadAllSubAssetAsync<T>(string location, CancellationToken cancellationToken = default) where T : UnityEngine.Object
|
public async UniTask<T[]> LoadAllSubAssetAsync<T>(string location,
|
||||||
|
CancellationToken cancellationToken = default, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return await m_ResourceManager.LoadAllSubAssetAsync<T>(location, cancellationToken);
|
return await m_ResourceManager.LoadAllSubAssetAsync<T>(location, cancellationToken,
|
||||||
|
packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 预加载
|
#region 预加载
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 放入预加载对象。
|
/// 放入预加载对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
/// <param name="assetObject">预加载对象。</param>
|
/// <param name="assetObject">预加载对象。</param>
|
||||||
public void PushPreLoadAsset(string location, UnityEngine.Object assetObject)
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
|
public void PushPreLoadAsset(string location, UnityEngine.Object assetObject, string packageName = "")
|
||||||
{
|
{
|
||||||
m_ResourceManager.PushPreLoadAsset(location, assetObject);
|
m_ResourceManager.PushPreLoadAsset(location, assetObject, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取预加载的实例对象。
|
/// 获取预加载的实例对象。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location">资源定位地址。</param>
|
/// <param name="location">资源定位地址。</param>
|
||||||
|
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
|
||||||
/// <typeparam name="T">资源实例类型。</typeparam>
|
/// <typeparam name="T">资源实例类型。</typeparam>
|
||||||
/// <returns>预加载对象。</returns>
|
/// <returns>预加载对象。</returns>
|
||||||
public T GetPreLoadAsset<T>(string location) where T : UnityEngine.Object
|
public T GetPreLoadAsset<T>(string location, string packageName = "") where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
return m_ResourceManager.GetPreLoadAsset<T>(location);
|
return m_ResourceManager.GetPreLoadAsset<T>(location, packageName: packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user