资源模块增加设置:是否使用系统释放无用资源策略。

资源模块增加设置:是否使用系统释放无用资源策略。
This commit is contained in:
ALEXTANG
2024-06-20 09:42:49 +08:00
parent ca79adce7c
commit 1aaa46c82c
2 changed files with 18 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ namespace TEngine.Editor.Inspector
private SerializedProperty m_ReadWritePathType = null; private SerializedProperty m_ReadWritePathType = null;
private SerializedProperty m_MinUnloadUnusedAssetsInterval = null; private SerializedProperty m_MinUnloadUnusedAssetsInterval = null;
private SerializedProperty m_MaxUnloadUnusedAssetsInterval = null; private SerializedProperty m_MaxUnloadUnusedAssetsInterval = null;
private SerializedProperty m_UseSystemUnloadUnusedAssets = null;
private SerializedProperty m_AssetAutoReleaseInterval = null; private SerializedProperty m_AssetAutoReleaseInterval = null;
private SerializedProperty m_AssetCapacity = null; private SerializedProperty m_AssetCapacity = null;
private SerializedProperty m_AssetExpireTime = null; private SerializedProperty m_AssetExpireTime = null;
@@ -106,6 +107,8 @@ namespace TEngine.Editor.Inspector
} }
} }
EditorGUILayout.PropertyField(m_UseSystemUnloadUnusedAssets);
float minUnloadUnusedAssetsInterval = float minUnloadUnusedAssetsInterval =
EditorGUILayout.Slider("Min Unload Unused Assets Interval", m_MinUnloadUnusedAssetsInterval.floatValue, 0f, 3600f); EditorGUILayout.Slider("Min Unload Unused Assets Interval", m_MinUnloadUnusedAssetsInterval.floatValue, 0f, 3600f);
if (Math.Abs(minUnloadUnusedAssetsInterval - m_MinUnloadUnusedAssetsInterval.floatValue) > 0.01f) if (Math.Abs(minUnloadUnusedAssetsInterval - m_MinUnloadUnusedAssetsInterval.floatValue) > 0.01f)
@@ -246,6 +249,7 @@ namespace TEngine.Editor.Inspector
m_ReadWritePathType = serializedObject.FindProperty("m_ReadWritePathType"); m_ReadWritePathType = serializedObject.FindProperty("m_ReadWritePathType");
m_MinUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MinUnloadUnusedAssetsInterval"); m_MinUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MinUnloadUnusedAssetsInterval");
m_MaxUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MaxUnloadUnusedAssetsInterval"); m_MaxUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MaxUnloadUnusedAssetsInterval");
m_UseSystemUnloadUnusedAssets = serializedObject.FindProperty("m_UseSystemUnloadUnusedAssets");
m_AssetAutoReleaseInterval = serializedObject.FindProperty("m_AssetAutoReleaseInterval"); m_AssetAutoReleaseInterval = serializedObject.FindProperty("m_AssetAutoReleaseInterval");
m_AssetCapacity = serializedObject.FindProperty("m_AssetCapacity"); m_AssetCapacity = serializedObject.FindProperty("m_AssetCapacity");
m_AssetExpireTime = serializedObject.FindProperty("m_AssetExpireTime"); m_AssetExpireTime = serializedObject.FindProperty("m_AssetExpireTime");

View File

@@ -32,6 +32,7 @@ namespace TEngine
[SerializeField] private float m_MaxUnloadUnusedAssetsInterval = 300f; [SerializeField] private float m_MaxUnloadUnusedAssetsInterval = 300f;
[SerializeField] private bool m_UseSystemUnloadUnusedAssets = true;
/// <summary> /// <summary>
/// 当前最新的包裹版本。 /// 当前最新的包裹版本。
/// </summary> /// </summary>
@@ -157,6 +158,15 @@ namespace TEngine
get => m_MaxUnloadUnusedAssetsInterval; get => m_MaxUnloadUnusedAssetsInterval;
set => m_MaxUnloadUnusedAssetsInterval = value; set => m_MaxUnloadUnusedAssetsInterval = value;
} }
/// <summary>
/// 使用系统释放无用资源策略。
/// </summary>
public bool UseSystemUnloadUnusedAssets
{
get => m_UseSystemUnloadUnusedAssets;
set => m_UseSystemUnloadUnusedAssets = value;
}
/// <summary> /// <summary>
/// 获取无用资源释放的等待时长,以秒为单位。 /// 获取无用资源释放的等待时长,以秒为单位。
@@ -680,6 +690,10 @@ namespace TEngine
m_PreorderUnloadUnusedAssets = false; m_PreorderUnloadUnusedAssets = false;
m_LastUnloadUnusedAssetsOperationElapseSeconds = 0f; m_LastUnloadUnusedAssetsOperationElapseSeconds = 0f;
m_AsyncOperation = Resources.UnloadUnusedAssets(); m_AsyncOperation = Resources.UnloadUnusedAssets();
if (m_UseSystemUnloadUnusedAssets)
{
m_ResourceManager.UnloadUnusedAssets();
}
} }
if (m_AsyncOperation is { isDone: true }) if (m_AsyncOperation is { isDone: true })