diff --git a/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs b/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs index bfc0af29..abe51a2a 100644 --- a/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs +++ b/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs @@ -30,6 +30,7 @@ namespace TEngine.Editor.Inspector private SerializedProperty m_ReadWritePathType = null; private SerializedProperty m_MinUnloadUnusedAssetsInterval = null; private SerializedProperty m_MaxUnloadUnusedAssetsInterval = null; + private SerializedProperty m_UseSystemUnloadUnusedAssets = null; private SerializedProperty m_AssetAutoReleaseInterval = null; private SerializedProperty m_AssetCapacity = null; private SerializedProperty m_AssetExpireTime = null; @@ -106,6 +107,8 @@ namespace TEngine.Editor.Inspector } } + EditorGUILayout.PropertyField(m_UseSystemUnloadUnusedAssets); + float minUnloadUnusedAssetsInterval = EditorGUILayout.Slider("Min Unload Unused Assets Interval", m_MinUnloadUnusedAssetsInterval.floatValue, 0f, 3600f); if (Math.Abs(minUnloadUnusedAssetsInterval - m_MinUnloadUnusedAssetsInterval.floatValue) > 0.01f) @@ -246,6 +249,7 @@ namespace TEngine.Editor.Inspector m_ReadWritePathType = serializedObject.FindProperty("m_ReadWritePathType"); m_MinUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MinUnloadUnusedAssetsInterval"); m_MaxUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MaxUnloadUnusedAssetsInterval"); + m_UseSystemUnloadUnusedAssets = serializedObject.FindProperty("m_UseSystemUnloadUnusedAssets"); m_AssetAutoReleaseInterval = serializedObject.FindProperty("m_AssetAutoReleaseInterval"); m_AssetCapacity = serializedObject.FindProperty("m_AssetCapacity"); m_AssetExpireTime = serializedObject.FindProperty("m_AssetExpireTime"); diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs index 72b21d92..fbc87b45 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs @@ -32,6 +32,7 @@ namespace TEngine [SerializeField] private float m_MaxUnloadUnusedAssetsInterval = 300f; + [SerializeField] private bool m_UseSystemUnloadUnusedAssets = true; /// /// 当前最新的包裹版本。 /// @@ -157,6 +158,15 @@ namespace TEngine get => m_MaxUnloadUnusedAssetsInterval; set => m_MaxUnloadUnusedAssetsInterval = value; } + + /// + /// 使用系统释放无用资源策略。 + /// + public bool UseSystemUnloadUnusedAssets + { + get => m_UseSystemUnloadUnusedAssets; + set => m_UseSystemUnloadUnusedAssets = value; + } /// /// 获取无用资源释放的等待时长,以秒为单位。 @@ -680,6 +690,10 @@ namespace TEngine m_PreorderUnloadUnusedAssets = false; m_LastUnloadUnusedAssetsOperationElapseSeconds = 0f; m_AsyncOperation = Resources.UnloadUnusedAssets(); + if (m_UseSystemUnloadUnusedAssets) + { + m_ResourceManager.UnloadUnusedAssets(); + } } if (m_AsyncOperation is { isDone: true })