版本:Unity 6 (6000.0)
语言英语
  • C#

Application.lowMemory

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

当您的应用程序从其运行的设备收到低内存通知时,将发生Application._lowMemory事件。

这仅在您的应用程序处于前台运行时发生。您可以从内存中释放非关键资源(例如纹理和音频剪辑),以避免应用程序被终止。您还可以加载这些资源的较小版本。此外,您应该将任何临时数据序列化到永久存储中,以避免在应用程序终止时发生数据丢失。

iOS、Android 和通用 Windows 平台 (UWP) 上支持Application._lowMemory事件,它对应于不同平台上的以下回调

  • iOSUIApplicationDelegate applicationDidReceiveMemoryWarning
  • AndroidonLowMemory() 和 onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL)
  • UWPMemoryManager.AppMemoryUsageIncreased (AppMemoryUsageLevel == OverLimit)

注意:对于 UWP,此事件不会在桌面设备上发生,仅在内存受限设备(如 HoloLens 和 Xbox One)上有效。在这种情况下,操作系统指定的 OverLimit 阈值非常高,以至于无法合理地达到并触发该事件。

以下示例演示了处理回调的示例

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

class LowMemoryTrigger : MonoBehaviour { List<Texture2D> _textures;

private void Start() { _textures = new List<Texture2D>(); Application.lowMemory += OnLowMemory; }

private void Update() { // allocate textures until we run out of memory _textures.Add(new Texture2D(256, 256)); }

private void OnLowMemory() { // release all cached textures _textures = new List<Texture2D>(); Resources.UnloadUnusedAssets(); } }