mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
Update ResourceModule.cs
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Serialization;
|
using UnityEngine.SceneManagement;
|
||||||
using YooAsset;
|
using YooAsset;
|
||||||
|
|
||||||
namespace TEngine
|
namespace TEngine
|
||||||
@@ -12,6 +14,7 @@ namespace TEngine
|
|||||||
public class ResourceModule : GameFrameworkModuleBase
|
public class ResourceModule : GameFrameworkModuleBase
|
||||||
{
|
{
|
||||||
#region Propreties
|
#region Propreties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取当前资源适用的游戏版本号。
|
/// 获取当前资源适用的游戏版本号。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -52,19 +55,17 @@ namespace TEngine
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ResourceDownloaderOperation Downloader { get; set; }
|
public ResourceDownloaderOperation Downloader { get; set; }
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField] private ReadWritePathType readWritePathType = ReadWritePathType.Unspecified;
|
||||||
private ReadWritePathType readWritePathType = ReadWritePathType.Unspecified;
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField] private float minUnloadUnusedAssetsInterval = 60f;
|
||||||
private float minUnloadUnusedAssetsInterval = 60f;
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField] private float maxUnloadUnusedAssetsInterval = 300f;
|
||||||
private float maxUnloadUnusedAssetsInterval = 300f;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
|
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long milliseconds = 30;
|
public long milliseconds = 30;
|
||||||
|
|
||||||
public int downloadingMaxNum = 3;
|
public int downloadingMaxNum = 3;
|
||||||
public int failedTryAgain = 3;
|
public int failedTryAgain = 3;
|
||||||
|
|
||||||
@@ -259,7 +260,8 @@ namespace TEngine
|
|||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
m_LastUnloadUnusedAssetsOperationElapseSeconds += Time.unscaledDeltaTime;
|
m_LastUnloadUnusedAssetsOperationElapseSeconds += Time.unscaledDeltaTime;
|
||||||
if (m_AsyncOperation == null && (m_ForceUnloadUnusedAssets || m_LastUnloadUnusedAssetsOperationElapseSeconds >= maxUnloadUnusedAssetsInterval || m_PreorderUnloadUnusedAssets && m_LastUnloadUnusedAssetsOperationElapseSeconds >= minUnloadUnusedAssetsInterval))
|
if (m_AsyncOperation == null && (m_ForceUnloadUnusedAssets || m_LastUnloadUnusedAssetsOperationElapseSeconds >= maxUnloadUnusedAssetsInterval ||
|
||||||
|
m_PreorderUnloadUnusedAssets && m_LastUnloadUnusedAssetsOperationElapseSeconds >= minUnloadUnusedAssetsInterval))
|
||||||
{
|
{
|
||||||
Log.Info("Unload unused assets...");
|
Log.Info("Unload unused assets...");
|
||||||
m_ForceUnloadUnusedAssets = false;
|
m_ForceUnloadUnusedAssets = false;
|
||||||
@@ -280,5 +282,202 @@ namespace TEngine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查资源是否存在。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要检查资源的名称。</param>
|
||||||
|
/// <returns>检查资源是否存在的结果。</returns>
|
||||||
|
public HasAssetResult HasAsset(string assetName)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.HasAsset(assetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置默认资源包。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="package">资源包。</param>
|
||||||
|
public void SetDefaultPackage(ResourcePackage package)
|
||||||
|
{
|
||||||
|
m_ResourceManager.SetDefaultPackage(package);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否需要从远端更新下载。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool IsNeedDownloadFromRemote(string location)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.IsNeedDownloadFromRemote(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否需要从远端更新下载。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetInfo">资源信息。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool IsNeedDownloadFromRemote(AssetInfo assetInfo)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.IsNeedDownloadFromRemote(assetInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取资源信息列表。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="resTag">资源标签。</param>
|
||||||
|
/// <returns>资源信息列表。</returns>
|
||||||
|
public AssetInfo[] GetAssetInfos(string resTag)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.GetAssetInfos(resTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取资源信息列表。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tags">资源标签列表。</param>
|
||||||
|
/// <returns>资源信息列表。</returns>
|
||||||
|
public AssetInfo[] GetAssetInfos(string[] tags)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.GetAssetInfos(tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取资源信息。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="location">资源的定位地址。</param>
|
||||||
|
/// <returns>资源信息。</returns>
|
||||||
|
public AssetInfo GetAssetInfo(string location)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.GetAssetInfo(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查资源定位地址是否有效。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="location">资源的定位地址</param>
|
||||||
|
public bool CheckLocationValid(string location)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.CheckLocationValid(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步加载资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>资源实例。</returns>
|
||||||
|
public T LoadAsset<T>(string assetName) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAsset<T>(assetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步加载资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <param name="parent">父节点位置。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>资源实例。</returns>
|
||||||
|
public T LoadAsset<T>(string assetName, Transform parent) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAsset<T>(assetName, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步加载资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>资源实例。</returns>
|
||||||
|
public T LoadAsset<T>(string assetName, out AssetOperationHandle handle) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAsset<T>(assetName, out handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步加载资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <param name="handle">资源操作句柄。</param>
|
||||||
|
/// <param name="parent">父节点位置。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>资源实例。</returns>
|
||||||
|
public T LoadAsset<T>(string assetName, Transform parent, out AssetOperationHandle handle) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAsset<T>(assetName, parent, out handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步加载资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>异步资源实例。</returns>
|
||||||
|
public UniTask<T> LoadAssetAsync<T>(string assetName, CancellationToken cancellationToken) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAssetAsync<T>(assetName, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步加载游戏物体。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载的游戏物体名称。</param>
|
||||||
|
/// <param name="cancellationToken">取消操作Token。</param>
|
||||||
|
/// <returns>异步游戏物体实例。</returns>
|
||||||
|
public UniTask<UnityEngine.GameObject> LoadGameObjectAsync(string assetName, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAssetAsync<GameObject>(assetName, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步加载资源并获取句柄。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>同步加载资源句柄。</returns>
|
||||||
|
public AssetOperationHandle LoadAssetGetOperation<T>(string assetName) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAssetGetOperation<T>(assetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步加载资源并获取句柄。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetName">要加载资源的名称。</param>
|
||||||
|
/// <typeparam name="T">要加载资源的类型。</typeparam>
|
||||||
|
/// <returns>异步加载资源句柄。</returns>
|
||||||
|
public AssetOperationHandle LoadAssetAsyncHandle<T>(string assetName) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadAssetAsyncHandle<T>(assetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步加载场景。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="location">场景的定位地址</param>
|
||||||
|
/// <param name="sceneMode">场景加载模式</param>
|
||||||
|
/// <param name="activateOnLoad">加载完毕时是否主动激活</param>
|
||||||
|
/// <param name="priority">优先级</param>
|
||||||
|
/// <returns>异步加载场景句柄。</returns>
|
||||||
|
public SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadSceneAsync(location, sceneMode, activateOnLoad, priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步加载场景
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assetInfo">场景的资源信息</param>
|
||||||
|
/// <param name="sceneMode">场景加载模式</param>
|
||||||
|
/// <param name="activateOnLoad">加载完毕时是否主动激活</param>
|
||||||
|
/// <param name="priority">优先级</param>
|
||||||
|
/// <returns>异步加载场景句柄。</returns>
|
||||||
|
public SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100)
|
||||||
|
{
|
||||||
|
return m_ResourceManager.LoadSceneAsync(assetInfo, sceneMode, activateOnLoad, priority);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user