Xcode 帧调试器 Unity 集成
Xcode 的帧调试器工具可以让您捕获应用程序的帧,查看 GPU 在该帧期间执行的命令,检查 GPU 内存中的数据,并确定着色器中的瓶颈。通过这种方式,您可以详细分析 GPU 的性能。
Unity 与 Xcode 帧调试器的集成方式如下:
- 在 macOS、iOS 和 tvOS 上,您可以在应用程序在目标设备上运行时,使用 Xcode 帧调试器来分析应用程序的帧。
- 在 macOS 上,您可以使用 Xcode 帧调试器从 Unity 编辑器分析帧。
重要提示:
- 帧调试仅在应用程序运行于 Xcode 支持的平台和图形 API 时才有效。
- Xcode 仅支持 macOS 上的 Metal 图形 API。
- 如果 Unity 使用其他图形 API,则 Xcode 集成将被禁用,直到您选择一个受支持的图形 API。
从应用程序捕获帧
要使用 Xcode 帧调试器从应用程序捕获帧,请执行以下操作之一:
- 从 Xcode 启动应用程序,并使用 Xcode__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary 或 FrameCapture API 请求帧捕获。您可以立即在 Xcode 中分析捕获的帧,或者将它们保存到磁盘。所有使用 Metal 的平台都支持此工作流程。
- 直接从命令行启动应用程序(无需 Xcode 项目),并使用 FrameCapture API 将帧捕获保存到磁盘。注意:iOS 不支持此工作流程。
使用 Xcode 从应用程序捕获帧
本部分介绍如何使用 Xcode UI 或 FrameCapture API 启动应用程序并执行帧捕获。所有使用 Metal 的平台都支持此工作流程。
1.创建一个 Xcode 项目。
您可以从 Unity 编辑器创建一个 Xcode 项目,或者使用任何其他 Xcode 项目来启动 macOS 应用程序。
要从 Unity 编辑器构建 Xcode 项目:
- 打开构建设置 (Build Settings) 窗口(文件 (File) > 构建设置 (Build Settings))。
- 仅限 macOS:启用创建 Xcode 项目 (Create Xcode Project) 选项
- 点击构建 (Build)。
要使用其他 Xcode 项目启动 macOS 应用程序:
- 在 Xcode 中,创建一个新的空 macOS 项目,或者打开一个现有的 macOS 项目。
- 转到产品 (Product) > 方案 (Scheme) > 编辑方案 (Edit scheme),并打开信息 (Info) 选项卡。
- 将 Executable 设置为已构建的 Unity 应用程序。
2.编辑 Xcode 项目方案,以便可以执行帧捕获。
您可以使用 Xcode 图形界面进行此操作。为此,请按照 Xcode 文档中的启用帧捕获指南将项目方案的 GPU 帧捕获设置为 Metal。
您也可以使用 XcScheme API 配置 Xcode 项目方案,这对于自动化构建非常有用。更多信息请参考 XcScheme API 文档。
3.从 Xcode 启动项目,并执行帧捕获。
在 Xcode 中,按下帧捕获 (Frame Capture) 按钮(摄像机图标),以捕获下一帧数据。
您也可以使用 FrameCapture API 从脚本中执行帧捕获。关于如何在 Xcode 中分析帧捕获数据,请参阅 Xcode 帧调试器文档。
从命令行启动应用程序并捕获帧
本部分介绍如何从命令行启动应用程序,使用 FrameCapture API 执行帧捕获,并将结果保存到磁盘。重要提示:iOS 不支持此工作流程。要在 iOS 上执行帧捕获,必须始终从 Xcode 启动应用程序。
- 将 FrameCapture.BeginCaptureToFile 和 EndCapture 的调用添加到代码中,以便根据需要执行帧捕获。
- 使用以下标志从命令行启动应用程序:
-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 编辑器已打开,请先关闭它。
- 在 Xcode 中,创建一个新的空 macOS 项目,或者打开一个现有的 macOS 项目。
- 转到产品 (Product) > 方案 (Scheme) > 编辑方案 (Edit scheme),并打开信息 (Info) 选项卡。
- 将 Executable 设置为 Unity 编辑器。
- 按照 Xcode 文档中的启用帧捕获指南,将项目方案的 GPU 帧捕获 (GPU Frame Capture) 设置为 Metal。
-
可选 - 如果安装了 Unity Hub:转到 Xcode Scheme 设置窗口中的 Arguments 选项卡,然后使用
-projectPath 将路径作为参数传递给您的 Unity 项目。这样可以防止在 Xcode 启动编辑器时打开 Unity Hub,而是直接使用项目调试编辑器。
- 行 Xcode 项目以启动 Unity 编辑器。
- 使用以下方法之一执行帧捕获:
-
Unity 编辑器:在 Unity 编辑器中,使用 Scene 视图或 Game 视图右侧的 Xcode Capture 按钮执行帧捕获。
-
Xcode:按下帧捕获 (Frame Capture) 按钮(摄像机图标),以捕获下一帧数据。
-
脚本:使用
FrameCapture API。更多信息请参考 FrameCapture API 文档。关于如何在 Xcode 中分析帧捕获数据,请参考 Apple 的 Xcode 帧调试器文档。
从命令行启动 Unity 编辑器并捕获帧
本部分介绍如何从命令行启动 Unity 编辑器,使用 FrameCapture API 执行帧捕获,并将帧捕获保存到磁盘。macOS 上不支持此工作流程。
- 将 FrameCapture.BeginCaptureToFile 和 EndCapture 的调用添加到代码中,以便根据需要执行帧捕获。
- 使用以下标志从命令行启动 Unity 编辑器:
-enable-metal-capture。Xcode 会在代码请求时执行帧捕获,并将结果保存到磁盘。
有关如何在 Xcode 中分析这些数据的信息,请参阅 Xcode 帧调试器文档。
其他资源