版本:Unity 6 (6000.0)
语言:English
深度链接
目标平台的构建路径要求

Xcode 帧调试器与 Unity 集成

可以使用 Xcode帧调试器工具 捕获应用程序的帧,以查看 GPU 在该帧期间执行的命令,检查 GPU 内存中的数据,并识别 着色器在 GPU 上运行的程序。 更多信息
参见 术语表
中的瓶颈。这使您可以详细分析 GPU 性能。

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

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

重要

  • 只有当应用程序在 Xcode 支持的平台和图形 API 上运行时,帧调试才有效。
  • Xcode 仅支持使用 Metal 图形的 macOS。
  • 如果 Unity 使用其他 API,则 Xcode 集成将被禁用,直到您选择受支持的图形 API。

捕获应用程序的帧

要使用 Xcode 帧调试器捕获帧,请执行以下操作之一

  • 从 Xcode 启动应用程序,并使用 Xcode 的 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
    参见 术语表
    FrameCapture API 请求帧捕获。您可以立即在 Xcode 中分析帧捕获,或将其保存到磁盘。此工作流在所有使用 Metal 的平台上都受支持。
  • 直接从命令行启动应用程序(无需 Xcode 项目),并使用 FrameCapture API 将帧捕获保存到磁盘。注意:iOS 不支持此工作流。

使用 Xcode 捕获应用程序的帧

本节介绍如何启动应用程序并使用 Xcode UI 或 FrameCapture API 执行帧捕获。此工作流在所有使用 Metal 的平台上都受支持。

1. 创建 Xcode 项目。

您可以从 Unity 编辑器创建 Xcode 项目,或者使用任何其他 Xcode 项目来启动 macOS 应用程序。

要从 Unity 编辑器构建 Xcode 项目

  1. 打开“构建设置”窗口(文件 > 构建设置)。
  2. 仅限 macOS:启用“创建 Xcode 项目”。
  3. 点击“构建”。

要使用另一个 Xcode 项目启动 macOS 应用程序

  1. 在 Xcode 中,创建一个新的空 macOS 项目,或打开一个现有的 macOS 项目。
  2. 转到“产品 > 方案 > 编辑方案”,然后打开“信息”选项卡。
  3. 将“可执行文件”设置为已构建的 Unity 应用程序。

2. 编辑 Xcode 项目方案,以便您可以执行帧捕获。

您可以使用 Xcode GUI。为此,请按照 Xcode 文档中的 启用帧捕获指南 将项目方案的 GPU “帧捕获”设置设为 Metal。

您还可以使用 XcScheme API 配置 Xcode 项目方案,这对于自动化构建很有用。有关更多信息,请参阅 XcScheme API 文档

3. 从 Xcode 启动项目并执行帧捕获。

在 Xcode 中,按“帧捕获”按钮(相机图标)以捕获下一帧数据。

您还可以使用 FrameCapture API 从脚本执行帧捕获。有关在 Xcode 中分析帧捕获数据的详细信息,请参阅 Xcode 帧调试器文档

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

本节介绍如何从命令行启动应用程序,使用 FrameCapture API 执行帧捕获并将结果保存到磁盘。重要:此工作流在 iOS 上不受支持。要在 iOS 上执行帧捕获,您必须始终从 Xcode 启动应用程序。

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

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

捕获 Unity 编辑器的帧

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

使用 Xcode 捕获 Unity 编辑器的帧

请按照以下步骤从 Xcode 启动 Unity 编辑器并使用 Unity 编辑器 UI、Xcode UI 或 FrameCapture API 执行帧捕获。您可以立即分析帧捕获,或将结果保存到磁盘。此工作流在 macOS 上受支持。

先决条件:如果 Unity 编辑器已打开,请关闭它。

  1. 在 Xcode 中,创建一个新的空 macOS 项目,或打开一个现有的 macOS 项目。
  2. 转到产品 > 方案 > 编辑方案,然后打开信息选项卡。
  3. 可执行文件设置为 Unity 编辑器。
  4. 按照 Xcode 文档中的启用帧捕获指南 将项目方案的GPU 帧捕获设置设为Metal
  5. 可选 - 如果您安装了 Unity Hub:转到 Xcode 方案设置窗口中的参数选项卡,并使用-projectPath将 Unity 项目的路径作为参数传递。这样做是为了防止 Xcode 启动编辑器时 Unity Hub 打开,而是直接使用您的项目调试编辑器。 FrameDebug 窗口显示项目路径
  6. 运行 Xcode 项目以启动 Unity 编辑器。
  7. 使用以下方法之一执行帧捕获
    • Unity 编辑器:使用“场景”视图或游戏视图右侧的Xcode 捕获按钮执行帧捕获。
    • Xcode:选择帧捕获按钮(相机图标)以捕获下一帧数据。
    • 脚本:使用FrameCapture API。有关更多信息,请参阅 FrameCapture API 文档。有关在 Xcode 中分析帧捕获数据的详细信息,请参阅 Apple 的 Xcode 帧调试器文档

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

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

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

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

其他资源

深度链接
目标平台的构建路径要求