Version: 2021.1
RenderDoc 集成
Device Simulator

使用 Xcode 帧调试器

Xcode 有一个帧调试器工具,可让您捕获应用程序的帧并查看 GPU 在该帧期间执行的命令、检查 GPU 内存中的数据并确定着色器中的瓶颈。这使您可以分析 GPU 性能。

Xcode 中捕获的帧
Xcode 中捕获的帧

Unity 通过以下这些方式与 Xcode 帧调试器集成:

  • 在 macOS、iOS 和 tvOS 上,您可以在应用程序在目标设备上运行期间,使用 Xcode 帧调试器从应用程序分析帧。
  • 在 macOS 上,您可以使用 Xcode 帧调试器从 Unity 编辑器分析帧。

仅当应用程序在 Xcode 支持的平台和图形 API 上运行时,帧调试才可正常工作。从 Unity 2019.2 开始,Xcode 仅支持带有 Metal 图形的 macOS。如果 Unity 使用其他 API,则会禁用 Xcode 集成,直到您选择支持的图形 API。

从应用程序捕获帧

要使用 Xcode 帧调试器从应用程序捕获帧,可以执行以下操作之一:

  • 从 Xcode 启动应用程序,并使用 Xcode UI 或 FrameCapture API 请求进行帧捕获。可以立即在 Xcode 中分析帧捕获,或将它们保存到磁盘。所有使用 Metal 的平台都支持此工作流程。
  • 在没有 Xcode 项目的情况下直接从命令行启动应用程序,并使用 FrameCapture API 将帧捕获保存到磁盘。iOS 上不支持此工作流程。

使用 Xcode 从应用程序捕获帧

此部分介绍如何使用 Xcode UI 或 FrameCapture API 启动应用程序并执行帧捕获。

所有使用 Metal 的平台都支持此工作流程。

  1. 创建 Xcode 项目。
    1. 执行此操作的最简单方法是从 Unity 编辑器构建 Xcode 项目:
      1. 打开 Build Settings 窗口 (File > Build Settings)。
      2. 仅限 macOS:启用 Create Xcode Project
      3. 单击 Build
    2. 或者,可以使用任何其他 Xcode 项目启动 macOS 应用程序。为此需要执行以下操作:
      1. 在 Xcode 中,创建新的空 macOS 项目,或打开现有 macOS 项目。
      2. 转到 Product > Scheme > Edit scheme,然后打开 Info 选项卡。
      3. Executable 设置为构建的 Unity 应用程序。
  2. 编辑 Xcode 项目方案,以便可以执行帧捕获。
    1. 最简单的方法是使用 Xcode GUI:
      1. 按照 Xcode 文档中的启用帧捕获指南将项目方案的 GPU Frame Capture 设置设为 Metal。
    2. 还可以使用 XcScheme API 配置 Xcode 项目方案,这对于自动构建可能非常有用。有关更多信息,请参阅 XcScheme API 文档
  3. 从 Xcode 启动项目。
  4. 在适当的时间点,执行帧捕获。
    1. 最简单的方法是使用 Xcode UI:
      1. 在 Xcode 中,按 Frame Capture 按钮(摄像机图标)以捕获下一个数据帧。
    2. 还可以使用 FrameCapture API 从脚本执行帧捕获。有关更多信息,请参阅 FrameCapture API 文档。

有关在 Xcode 中分析帧捕获数据的信息,请参阅 Xcode 帧调试器文档

使用命令行从应用程序捕获帧

此部分介绍如何从命令行启动应用程序,使用 FrameCapture API 执行帧捕获,并将结果保存到磁盘。

iOS 上不支持此工作流程。要在 iOS 上执行帧捕获,必须始终从 Xcode 启动应用程序。

  1. 将对 FrameCapture.BeginCaptureToFileEndCapture 的调用添加到代码,以便可以根据需要执行帧捕获。
  2. 使用以下标志从命令行启动应用程序:-enable-metal-capture。Xcode 会在代码请求时执行帧捕获,并将结果保存到磁盘。

有关在 Xcode 中分析此数据的信息,请参阅 Xcode 帧调试器文档

从 Unity 编辑器捕获帧

在 macOS 上,您可以使用 Xcode 帧调试器从 Unity 编辑器分析帧。如果使用 Xcode 启动 Unity 编辑器,则可以从 Unity 编辑器 UI 请求进行帧捕获。

使用 Xcode 从 Unity 编辑器捕获帧

此部分介绍如何从 Xcode 启动 Unity 编辑器并使用 Unity 编辑器 UI、Xcode UI 或 FrameCapture API 执行帧捕获。可以立即分析帧捕获,或将结果保存到磁盘。

macOS 上不支持此工作流程。

  1. 如果 Unity 编辑器已打开,请将它关闭。
  2. 在 Xcode 中,创建新的空 macOS 项目,或打开现有 macOS 项目。
  3. 转到 Product > Scheme > Edit scheme,然后打开 Info 选项卡。
  4. Executable 设置为 Unity 编辑器。
  5. 按照 Xcode 文档中的启用帧捕获指南将项目方案的 GPU Frame Capture 设置设为 Metal。
  6. 运行 Xcode 项目以启动 Unity 编辑器。
  7. 在适当的时间点,执行帧捕获。
    1. 最简单的方法是使用 Unity 编辑器 UI:
      1. 在 Unity 编辑器中,使用 Scene 视图或 Game 视图右侧的 Xcode Capture 按钮执行帧捕获。
    2. 或者,可以使用 Xcode UI:
      1. 在 Xcode 中,按 Frame Capture 按钮(摄像机图标)以捕获下一个数据帧。
    3. 还可以使用 FrameCapture API 从脚本执行帧捕获。有关更多信息,请参阅 FrameCapture API 文档。

有关在 Xcode 中分析帧捕获数据的信息,请参阅 Xcode 帧调试器文档

使用命令行从 Unity 编辑器捕获帧

此工作流程介绍如何从命令行启动 Unity 编辑器,使用 FrameCapture API 执行帧捕获,并将帧捕获保存到磁盘。

macOS 上不支持此工作流程。

  1. 将对 FrameCapture.BeginCaptureToFileEndCapture 的调用添加到代码,以便可以根据需要执行帧捕获。
  2. 使用以下标志[从命令行启动 Unity 编辑器](https://docs.unity3d.com/Manual/CommandLineArguments.html-enable-metal-capture。Xcode 会在代码请求时执行帧捕获,并将结果保存到磁盘。

有关在 Xcode 中分析此数据的信息,请参阅 Xcode 帧调试器文档

RenderDoc 集成
Device Simulator