> For the complete documentation index, see [llms.txt](https://docs.maxverse.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maxverse.io/unity/setup-guide.md).

# Setup Guide

## 기본 개발 환경 설정

**요구사항**

* MAXST MAXVERSE SDK는 Unity 2020.3.25f  버전 이상을 권장합니다.
* Unity용 MAXST MAXVERSE SDK를 사용하기 위해서는 Unity 개발 도구와 Unity 개발에 대한 기본적인 지식이 필요합니다.
* Unity 개발 도구에 대한 자세한 정보는 [유니티 웹사이트](https://unity3d.com/)를 이용하시기 바랍니다.

## 동영상 간편 가이드

{% embed url="<https://www.youtube.com/watch?ab_channel=MAXST&v=pL1cZ6LoDro>" %}

{% hint style="info" %}
[00:32](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=32s) unitypackage 추가                 [00:49](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=49s) Package 추가\
[02:22](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=142s) Android 세팅                           [02:54](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=174s) XRData Load\
[03:08](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=188s) XRData atm, ant 에러조치      [03:19](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=199s) XRData POV생성\
[03:35](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=215s) VR 테스트                                [04:07](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=247s) AR테스트시 메쉬 검은현상 조치\
[04:36](https://www.youtube.com/watch?v=pL1cZ6LoDro\&t=276s) Occlusion 설정
{% endhint %}

## MAXST MAXVERSE Unity SDK 설치

1. **MAXVERSE SDK** 를 다운로드 합니다.
2. Unity Project 열거나 새로 생성하세요.
3. 새로 생성 했을 경우,  **MAXSTMAXVERSESDK\_\*.\*.\*.unitypackage** 를 다운 받아 유니티에 설치 하세요.
4. **XRData**를 다운 받아 위치에 맞는 XR 공간맵을 설치해 주세요.

{% hint style="info" %}
해당 파일은 <https://beta-developer.maxverse.io/products/sdk> 를 통해 다운 받으세요.
{% endhint %}

## Unity Setting

Unity의 File/Build Settings/Player Settings에 대한 설명 입니다.

{% hint style="danger" %}

* Android는 Other Settings의 Graphics APIs를 **OpenGLES3**만 선택되어야 합니다.
* Android는 **Multithreaded Rendering**의 체크를 해지해 주세요.
* Adnroid는 Publishing Settings에 **Custom Main Manifest**와 **Custom Main Gradle Template**가 설치 되어야 합니다.&#x20;
  {% endhint %}

해당 **Manifest**와 **Gradle** 셋팅은 아래의 Github 링크를 참고 바랍니다.&#x20;

| [AndroidManifest.xml](https://github.com/maxstdev/MAXVERSESDKUnity/blob/main/Assets/Plugins/Android/AndroidManifest.xml) |
| ------------------------------------------------------------------------------------------------------------------------ |
| [MainTemplate.gradle](https://github.com/maxstdev/MAXVERSESDKUnity/blob/main/Assets/Plugins/Android/mainTemplate.gradle) |

{% hint style="warning" %}
iOS는 **Camera Usage Description 과 Location Usage Description**에 문구를 추가해 주세요.
{% endhint %}

### Unity Project Setting

* **Package Manager**에서 git을 통해서 Source를 받기 때문에 **해당 컴퓨터에 git이 설치** 되어 있어야 합니다.
  * <https://git-scm.com/> 링크를 통해서 설치 하세요.
* 아래 코드와 같이 패키지가 추가 되어 있어야 합니다.&#x20;
* Package Manager에 대해서는 <https://docs.unity3d.com/kr/2020.3/Manual/upm-ui.html> 링크를 참고 하세요.

{% code title="manifest.json" %}

```json
{
    "dependencies": {
      ....
      "com.akb.knn": "https://github.com/Level3Manatee/KNN.git",
      "com.atteneder.ktx": "1.1.1",
      "com.unity.editorcoroutines": "1.0.0",
      ....
    },
    "scopedRegistries": [
      {
        "name": "Atteneder",
        "url": "https://package.openupm.com",
        "scopes": [
          "com.atteneder"
        ]
      }
    ]
  }
  
```

{% endcode %}

### Unity Error

Unity 2021.3.5 이상일 경우 아래와 같은 메시지가 나옵니다.

{% hint style="warning" %}
Library\PackageCache\\<com.unity.jobs@0.1.1-preview>\Unity.Jobs\IJobParallelForDefer.cs(176,85): error CS8377: The type 'U' must be a non-nullable value type, along with all fields at any level of nesting, in order to use it as parameter 'T' in the generic type or method 'NativeList\<T>'
{% endhint %}

해당 메시지에 대한 해결 방법은 아래와 같습니다.

Unity 상단 메뉴의 Edit->Project Settings->PackageManager를 선택하면 아래와 같이 나타납니다. PackageManer 의 **Show Dependencies를 check** 합니다.

![PackageManager](/files/aRwRLSkbFwV10fN8xmkG)

Unity 상단 메뉴의 Window->Package Manager를 클릭하면 아래와 같은 윈도우가 생성 됩니다.

![Package Manager](/files/OijGSLFoWlqZBAxD0RKy)

Jobs 찾아 Update를 합니다.

### XR SDK 공간맵 설치

* XR 공간맵은 해당 지역의 메쉬와 레퍼런스 이미지, 시뮬레이션 데이터를 포함합니다. XR 공간맵은 아래 그림과 같이 Unity Project 폴더와 동일 레벨에 XRData 폴더를 생성하고 XRData 하위에 저장되어야 합니다.

  MAXST에서 제공하는 [공간맵 파일(링크)](https://beta-developer.maxverse.io/products/map)을 Unity Project 폴더와 동일 레벨에서 압축을 해제하면 자동으로 XRData 폴더 하위에 XRMap 폴더와 XRSimulationData 폴더가 있고 두 폴더 하위에는 해당 맵 폴더가 생성됩니다.

![폴더 구조](/files/tRcBP9f174tq9AdxmDzL)
