Xcode 有一个帧调试器工具,可让您捕获应用程序的帧并查看 GPU 在该帧期间执行的命令、检查 GPU 内存中的数据并确定着色器中的瓶颈。这使您可以分析 GPU 性能。
Unity 通过以下这些方式与 Xcode 帧调试器集成:
仅当应用程序在 Xcode 支持的平台和图形 API 上运行时,帧调试才可正常工作。从 Unity 2019.2 开始,Xcode 仅支持带有 Metal 图形的 macOS。如果 Unity 使用其他 API,则会禁用 Xcode 集成,直到您选择支持的图形 API。
要使用 Xcode 帧调试器从应用程序捕获帧,可以执行以下操作之一:
FrameCapture
API 请求进行帧捕获。可以立即在 Xcode 中分析帧捕获,或将它们保存到磁盘。所有使用 Metal 的平台都支持此工作流程。FrameCapture
API 将帧捕获保存到磁盘。iOS 上不支持此工作流程。此部分介绍如何使用 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.BeginCaptureToFile 和 EndCapture 的调用添加到代码,以便可以根据需要执行帧捕获。
2.使用以下标志从命令行启动应用程序:-enable-metal-capture
。Xcode 会在代码请求时执行帧捕获,并将结果保存到磁盘。
有关在 Xcode 中分析此数据的信息,请参阅 Xcode 帧调试器文档。
在 macOS 上,您可以使用 Xcode 帧调试器从 Unity 编辑器分析帧。如果使用 Xcode 启动 Unity 编辑器,则可以从 Unity 编辑器 UI 请求进行帧捕获。
此部分介绍如何从 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 编辑器,使用 FrameCapture
API 执行帧捕获,并将帧捕获保存到磁盘。
macOS 上不支持此工作流程。
1.将对 FrameCapture.BeginCaptureToFile 和 EndCapture 的调用添加到代码,以便可以根据需要执行帧捕获。
2.使用以下标志[从命令行启动 Unity 编辑器](https://docs.unity3d.com/Manual/CommandLineArguments.html:-enable-metal-capture
。Xcode 会在代码请求时执行帧捕获,并将结果保存到磁盘。
有关在 Xcode 中分析此数据的信息,请参阅 Xcode 帧调试器文档。