using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace GeneralTools { /// /// 所有释放资源的方法放这里 /// public class ReleaseResources : SingletonBaseAttribute { private int releaseTime = 30; private event Action ReleaseActionListeners; public override void IAwake() { ReleaseActionListeners += ResoucesUnLoad; ReleaseActionListeners += GCCollect; } public override void IStart() { releaseTime = ConfigHelper.releaseTime; if (releaseTime > 0) { StartCoroutine(Release()); } } /// /// 添加一个释放资源方法 /// /// public void AddReleaseAction(Action action) { if (action != null) { ReleaseActionListeners += action; } } private void ResoucesUnLoad() { Resources.UnloadUnusedAssets(); } private void GCCollect() { GC.Collect(); } IEnumerator Release() { while (true) { yield return new WaitForSeconds(releaseTime); if (ReleaseActionListeners != null) ReleaseActionListeners(); } } } }