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();
}
}
}
}