Version: 6000.3
语言: 中文
用于着色器编译器的本机插件 API
IUnityMemoryManager API 参考

用于内存管理的原生插件 API

IUnityMemoryManager内存管理器 API 允许您在本机中使用 Unity 的内存管理和内存分析插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
用 C 或 C++ 编写。

此 API 使您能够:

  • 通过内存分配器访问 Unity 的内存管理器。
  • 通过 Unity 的内存跟踪插件的内存使用情况分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
    请参阅术语表
    包。

与等效的 C++ 内存管理方法相比,这些功能可以更轻松地管理和分析插件的内存分配。

插件 API 由IUnityMemoryManager接口,该接口在IUnityMemoryManager.h头文件,位于 PluginAPI 文件夹中。

有关详细信息,请参阅头文件中作为代码注释提供的文档。

应熟悉以下概念才能有效使用此 API:

跟踪 Unity 中的内存使用情况

要跟踪插件的内存使用情况,请使用内存性能分析器包拍摄快照,然后在“所有内存”选项卡中打开快照。当您使用IUnityMemoryManager要分配内存,内存分析器会在创建每个分配器时分配的区域和对象名称下显示插件的内存分配。

以下屏幕截图显示了内存探查器包窗口,该窗口显示了本机插件使用的内存,其中使用IUnityMemoryManager应用程序接口。在此示例中,调用了 CreateAllocator 方法,其中“MyNativePlugin”作为 areaName 参数,“MyPluginAllocator”作为 objectName 参数。有关详细信息,请参阅 IUnityMemoryManager API 参考

内存分析器(Memory Profiler) 包窗口,显示名为 插件后端分配器(Plugin Backend Allocator) 的用户定义分配器使用的内存。
内存分析器(Memory Profiler) 包窗口,显示名为 插件后端分配器(Plugin Backend Allocator) 的用户定义分配器使用的内存。

有关更多信息,请参阅快照

内存管理限制

此 API 使您能够在开发本机插件时使用 Unity 的内存管理系统。如上所述,这具有主要好处,但仍然存在局限性。Unity 的内存管理系统:

  • 不自动管理;您需要自己分配和释放内存。
  • 不会被垃圾收集器跟踪和清理。

由于本机 C++ 中的内存不受管理,因此需要跟踪应用程序的任何内存要求。这包括选择要分配的正确内存量,并确保在不再需要时取消分配内存。

IUnityMemoryManagerAPI 会影响性能,因为每个分配都需要虚拟调用。为了最大程度地减少这种性能影响,请使用 API 来降低分配较大内存块的频率。要处理更小和更频繁的分配,请使用此 API 分配单个较大的块,然后编写自己的代码来管理该块中的内存。不要将此 API 用于频繁的小额分配。

其他资源

用于着色器编译器的本机插件 API
IUnityMemoryManager API 参考