58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
namespace GeneralTools
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 所有释放资源的方法放这里
|
|||
|
|
/// </summary>
|
|||
|
|
public class ReleaseResources : SingletonBaseAttribute<ReleaseResources>
|
|||
|
|
{
|
|||
|
|
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());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 添加一个释放资源方法
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="action"></param>
|
|||
|
|
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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|