using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEngine.Gonbest.MagicCube; namespace Thousandto.Core.Base { /// /// 资源清理 /// public class AssetsCleaner { //低内存标记 public const int CN_LOW_MEMORY = 600; //是否正在清理 private static bool _isCleanning = false; //是否还有下一个 private static bool _hasNext = false; //清理所有的不用的资源 public static void ClearUnUsedAsset() { _hasNext = true; if (!_isCleanning) { FLogger.DebugLog("Start Clear UnUsed Assets!!"); _isCleanning = true; CoroutinePool.AddTask(DoClear()); } } //清理某个对应资源 public static void ClearAsset(UnityEngine.Object asset) { Resources.UnloadAsset(asset); } //清理的处理 private static IEnumerator DoClear() { while (_hasNext) { yield return new WaitForEndOfFrame(); _hasNext = false; yield return Resources.UnloadUnusedAssets(); GC.Collect(); yield return new WaitForSeconds(1f); } _isCleanning = false; } //判断是否更快的清理 public static bool CheckedMoreFast() { #if UNITY_IPHONE return SystemInfo.systemMemorySize < CN_LOW_MEMORY; #else return false; #endif } } }