# Xcode 프레임 디버거 Unity 통합

> Explains about Unity integration with the Xcode frame debugger on supported platforms to analyze GPU performance.

[Xcode](https://developer.apple.com/xcode/)[프레임 디버거 툴](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools)을 사용하면 애플리케이션의 프레임을 캡처하여 해당 프레임 동안 GPU가 수행한 커맨드를 확인하고, GPU 메모리의 데이터를 검사하고, 셰이더의 병목 현상을 찾아낼 수 있습니다. 이를 통해 GPU 성능을 매우 자세하게 분석할 수 있습니다.

Unity는 다음과 같은 방식으로 Xcode 프레임 디버거와 통합됩니다.

* macOS, iOS 및 tvOS에서 Xcode 프레임 디버거를 사용하여 타겟 디바이스에서 실행 중인 애플리케이션의 프레임을 분석할 수 있습니다.
* macOS에서 Xcode 프레임 디버거를 사용하면 Unity 에디터에서 프레임을 분석할 수 있습니다.

**중요:**

* 프레임 디버깅은 애플리케이션이 Xcode가 지원하는 플랫폼 및 그래픽스 API에서 실행 중인 경우에만 작동합니다.
* Xcode는 Metal 그래픽스를 사용하는 macOS만 지원합니다.
* Unity가 다른 API를 사용하는 경우 지원되는 그래픽스 API를 선택할 때까지 Xcode 통합이 비활성화됩니다.

## 애플리케이션에서 프레임 캡처##capture-a-frame-from-your-application

Xcode 프레임 디버거를 사용하여 프레임을 캡처하려면 다음 중 하나를 수행하십시오.

* Xcode에서 애플리케이션을 실행하고 Xcode UI 또는 [FrameCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md) API를 사용하여 프레임 캡처를 요청합니다. Xcode에서 프레임 캡처를 즉시 분석하거나 디스크에 저장할 수 있습니다. 이 워크플로는 Metal을 사용하는 모든 플랫폼에서 지원됩니다.
* Xcode 프로젝트가 없어도 커맨드 라인에서 직접 애플리케이션을 실행하고 [FrameCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md) API를 사용하여 프레임 캡처를 디스크에 저장합니다. **참고:** iOS는 이 워크플로를 지원하지 않습니다.

### Xcode로 애플리케이션에서 프레임 캡처##capture-a-frame-from-your-application-with-xcode

이 섹션에서는 Xcode UI 또는 FrameCapture API를 사용하여 애플리케이션을 시작하고 프레임 캡처를 수행하는 방법을 설명합니다. 이 워크플로는 Metal을 사용하는 모든 플랫폼에서 지원됩니다.

**1. Xcode 프로젝트를 만듭니다.**

Unity 에디터에서 Xcode 프로젝트를 생성하거나, 다른 Xcode 프로젝트를 사용하여 macOS 애플리케이션을 실행할 수 있습니다.

Unity 에디터에서 Xcode 프로젝트를 빌드하려면 다음 단계를 따르십시오.

1. Build Settings 창을 엽니다(**File > Build Settings**).
2. (macOS 경우) **Create Xcode Project**를 활성화합니다.
3. Build를 클릭합니다.

다른 Xcode 프로젝트를 사용하여 macOS 애플리케이션을 실행하려면 다음 단계를 따르십시오.

1. Xcode에서 비어 있는 새 macOS 프로젝트를 생성하거나, 기존 macOS 프로젝트를 엽니다.
2. Product > Scheme > Edit scheme으로 이동한 후 Info 탭을 엽니다.
3. **Executable**을 빌드한 Unity 애플리케이션으로 설정합니다.

**2. 프레임 캡처를 수행할 수 있도록 Xcode 프로젝트 체계를 편집합니다.**

또는 Xcode GUI를 사용합니다. 이렇게 하려면 Xcode 기술 자료의 [프레임 캡처 활성화 가이드](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/enabling_frame_capture)에 따라 프로젝트 체계의 GPU **Frame Capture** 설정을 Metal로 설정하십시오.

XcScheme API를 사용하여 자동화된 빌드에 유용한 Xcode 프로젝트 체계를 설정할 수도 있습니다. 자세한 내용은 [XcScheme API 기술 자료](/engine/6000.0/script-reference/unity-editor/i-os/xcode-xc-scheme.md)를 참조하십시오.

**3. Xcode에서 프로젝트를 실행하고 프레임 캡처를 수행합니다.**

Xcode에서 Frame Capture 버튼(카메라 아이콘)을 눌러 데이터의 다음 프레임을 캡처하십시오.

또는 [FrameCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md) API를 사용하여 스크립트에서 프레임 캡처를 수행할 수도 있습니다. Xcode에서 프레임 캡처 데이터를 분석하는 방법은 [Xcode 프레임 디버거 기술 자료](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools)를 참조하십시오.

### 커맨드 라인으로 애플리케이션에서 프레임 캡처##capture-a-frame-from-your-application-with-the-command-line

이 섹션에서는 커맨드 라인에서 애플리케이션을 실행하고 [FrameCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md) API를 사용하여 프레임 캡처를 수행하고 그 결과를 디스크에 저장하는 방법을 설명합니다. **중요:** 이 워크플로는 macOS에서 지원되지 않습니다. iOS에서 프레임 캡처를 수행하려면 항상 Xcode에서 애플리케이션을 실행해야 합니다.

1. 필요에 따라 프레임 캡처를 수행할 수 있도록 [FrameCapture.BeginCaptureToFile](/engine/6000.0/script-reference/unity-engine-apple/frame-capture/begin-capture-to-file.md)과 [EndCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture/end-capture.md) 호출을 코드에 추가합니다.
2. 다음 플래그를 사용하여 커맨드 라인에서 애플리케이션을 실행합니다. `-enable-metal-capture.` Xcode는 코드가 요청할 때 프레임 캡처를 수행하고 해당 결과를 디스크에 저장합니다.

Xcode에서 이 데이터를 분석하는 방법은 Apple의 [Xcode 프레임 디버거 기술 자료](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools)를 참조하십시오.

## Unity 에디터에서 프레임 캡처##capture-a-frame-from-the-unity-editor

macOS에서 Xcode 프레임 디버거를 사용하면 Unity 에디터에서 프레임을 분석할 수 있습니다. Xcode를 사용하여 Unity 에디터를 실행하면 Unity 에디터 UI에서 프레임 캡처를 요청할 수 있습니다.

### Xcode로 Unity 에디터에서 프레임 캡처##capture-a-frame-from-unity-editor-with-xcode

다음 단계에 따라 Xcode에서 Unity 에디터를 실행하고 Unity 에디터 UI, Xcode UI, FrameCapture API를 사용하여 프레임 캡처를 수행합니다. 프레임 캡처를 즉시 분석하거나 결과를 디스크에 저장할 수 있습니다. 이 워크플로는 macOS에서 지원됩니다.

**선행 조건:** Unity 에디터가 열려 있으면 닫습니다.

1. Xcode에서 비어 있는 새 macOS 프로젝트를 생성하거나, 기존 macOS 프로젝트를 엽니다.

2. **Product > Scheme > Edit scheme**으로 이동한 후 **Info** 탭을 엽니다.

3. **Executable**을 Unity 에디터로 설정합니다.

4. 이렇게 하려면 [Xcode 기술 자료의 프레임 캡처 활성화 가이드](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/enabling_frame_capture)에 따라 프로젝트 체계의 **GPU Frame Capture** 설정을 **Metal**로 설정하십시오.

5. **선택 사항 - Unity Hub를 설치한 경우:** Xcode Scheme 설정 창의 **Arguments** 탭으로 이동한 뒤 `-projectPath`를 사용하여 Unity 프로젝트의 경로를 인수로 전달합니다. 이는 Xcode가 에디터를 실행할 때 Unity Hub가 열리지 않도록 하고 대신 프로젝트로 에디터를 직접 디버깅하기 위한 것입니다.&#x20;
   **프로젝트 경로를 표시하는 FrameDebug 창:**
   ![](/api/media?file=/engine/6000.0/media/images/xcode-frame-debugger-cmd.png)

6. Xcode 프로젝트를 실행하여 Unity 에디터를 시작합니다.

7. 다음 방법 중 하나를 사용하여 프레임 캡처를 수행합니다.

   * **Unity 에디터:** 씬 뷰 또는 게임 뷰의 오른쪽에 있는 **Xcode Capture** 버튼을 사용하여 프레임 캡처를 수행합니다.
   * **Xcode:** **Frame Capture** 버튼(카메라 아이콘)을 선택하여 데이터의 다음 프레임을 캡처합니다.
   * **Script:** `FrameCapture` API를 사용합니다. 자세한 내용은 [FrameCapture API](https://docs.unity3d.com/ScriptReference/Apple.FrameCapture.html) 기술 자료를 참조하십시오. Xcode에서 프레임 캡처 데이터를 분석하는 방법은 Apple의 [Xcode 프레임 디버거 기술 자료](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools)를 참조하십시오.

### 커맨드 라인으로 Unity 에디터에서 프레임 캡처##capture-a-frame-from-the-unity-editor-with-the-command-line

이 워크플로에서는 커맨드 라인에서 Unity 에디터를 실행하고, [FrameCapture API](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md)를 사용하여 프레임 캡처를 수행하고, 해당 프레임 캡처를 디스크에 저장하는 방법을 설명합니다. 이 워크플로는 macOS에서 지원됩니다.

1. 필요에 따라 프레임 캡처를 수행할 수 있도록 [FrameCapture.BeginCaptureToFile](/engine/6000.0/script-reference/unity-engine-apple/frame-capture/begin-capture-to-file.md)과 [EndCapture](/engine/6000.0/script-reference/unity-engine-apple/frame-capture/end-capture.md) 호출을 코드에 추가합니다.
2. 플래그 `-enable-metal-capture`를 사용해 [커맨드 라인에서 Unity 에디터를 실행합니다](/engine/6000.0/manual/unity-editor/editor-features/command-line-arguments.md). Xcode는 코드가 요청할 때 프레임 캡처를 수행하고 해당 결과를 디스크에 저장합니다.

Xcode에서 이 데이터를 분석하는 방법은 [Xcode 프레임 디버거 기술 자료](https://developer.apple.com/documentation/metal/frame_capture_debugging_tools)를 참조하십시오.

## 추가 리소스:##additional-resources:

* [XcScheme API 기술 자료](/engine/6000.0/script-reference/unity-editor/i-os/xcode-xc-scheme.md)
* [FrameCapture API](/engine/6000.0/script-reference/unity-engine-apple/frame-capture.md)
* [커맨드 라인에서 Unity 에디터 실행](/engine/6000.0/manual/unity-editor/editor-features/command-line-arguments.md)
