Files
zeling_v2/Assets/Scripts/Core/Assets/AssetReleaseTracker.cs
2026-05-12 15:34:08 +08:00

39 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using BaseGames.Core.Events;
using BaseGames.Core.Assets;
using BaseGames.Core.Pool;
namespace BaseGames.Core
{
/// <summary>
/// 资产释放跟踪器。
/// 事件驱动:监听 EVT_SceneLoadRequest在新场景加载前清理旧场景的对象池缓存。
/// </summary>
public class AssetReleaseTracker : MonoBehaviour
{
[Header("Event Channels")]
[SerializeField] private SceneLoadRequestEventChannelSO _onSceneLoadRequest;
private string _lastLoadedScene;
private readonly CompositeDisposable _subs = new();
private void OnEnable() => _onSceneLoadRequest?.Subscribe(OnSceneLoadRequested).AddTo(_subs);
private void OnDisable() => _subs.Clear();
private void OnSceneLoadRequested(SceneLoadRequest req)
{
if (string.IsNullOrEmpty(_lastLoadedScene)) { _lastLoadedScene = req.SceneName; return; }
// 清除旧场景的敌人对象池缓存(按需扩展)
var pool = ServiceLocator.GetOrDefault<IObjectPoolService>();
if (pool != null)
{
pool.ClearPool(AddressKeys.PrefabEnemyGrunt);
pool.ClearPool(AddressKeys.PrefabEnemySkullArch);
}
_lastLoadedScene = req.SceneName;
}
}
}