本指南介绍了如何使用 Unity 的内存建议插件将 内存建议 API 集成到您的 Unity 游戏中。
要求
该插件在以下版本中受支持:
带有 Android NDK r19 的 Unity 2019
带有 Android NDK r19 的 Unity 2020
带有 Android NDK r21 的 Unity 2021
带有 Android NDK r23 的 Unity 2022
如果您使用的是 Unity 和 Android NDK 的其他版本,可能会遇到意外问题。要查找 Unity 安装程序使用的 NDK 版本,请参阅 Unity 的 Android 环境设置指南。
下载插件
下载 插件。
导入插件
该插件是一个 Unity 包,您可以将其导入到您的项目中。要导入插件,请单击资产 > 导入包 > 自定义包,然后选择您下载的.unitypackage
文件。您也可以在打开 Unity 项目后双击.unitypackage
文件。
使用库
本节介绍如何使用库。
初始化库
应用程序启动时,您需要初始化一次库。为此,请将以下代码添加到您的项目中
void Start()
{
MemoryAdviceErrorCode errorCode = MemoryAdvice.Init();
if(errorCode == MemoryAdviceErrorCode.Ok)
{
Debug.Log("Memory advice init successfully");
}
}
轮询内存状态
您可以通过根据您选择的间隔轮询库来检索应用程序的内存状态。当您需要轮询库时,请使用 MemoryAdvice_getMemoryState 函数
MemoryState memoryState = MemoryAdvice.GetMemoryState();
switch (memoryState)
{
case MemoryState.Ok:
//The application can safely allocate memory.
break;
case MemoryState.ApproachingLimit:
// The application should minimize memory allocation.
break;
case MemoryState.Critical:
// The application should free memory as soon as possible
// until the memory state changes.
break;
}
设置观察器
您还可以设置 观察器 并注册内存建议 API,当状态即将达到限制或临界 内存状态 时,您的观察器函数将被调用(但不会在正常状态下调用)。例如,以下代码创建了一个观察器,并请求每 2 秒通知一次内存建议 API
MemoryAdviceErrorCode errorCode = MemoryAdvice.RegisterWatcher(2000,
new MemoryWatcherDelegateListener((MemoryState state) =>
{
switch (memoryState)
{
case MemoryState.ApproachingLimit:
// The application should minimize memory allocation.
break;
case MemoryState.Critical:
// The application should free memory as soon as possible
// until the memory state changes.
break;
}
})
);
if(errorCode == MemoryAdviceErrorCode.Ok)
{
Debug.Log("Memory Advice watcher registered successfully");
}
后续步骤
您可以下载我们的 Unity 示例项目,该项目提供了一个简单的 UI 用于分配和释放内存,并使用内存建议 API 监控内存状态。