# 레벨플레이 연동 관련 문제 해결

> 일반적인 레벨플레이 연동 문제를 해결합니다.

> **Note:**
>
> 레벨플레이 연동 가이드를 찾고 계신가요? Unity 에디터에서 레벨플레이 미디에이션을 설정하는 방법은 [레벨플레이 통합 관리](/grow/levelplay/sdk/unity/package-integration.md)를 참고하십시오.

Unity 에디터와 레벨플레이를 연동할 때 몇 가지 문제가 생길 수도 있습니다. 이 가이드를 참고로 해결할 수 있는 문제 유형은 다음과 같습니다.

* [중복된 클래스 오류 메시지](#duplicated-classes-error-message)
* [레벨플레이 SDK에서 스크립팅 기호 제거 불가](#scripting-symbol-can't-be-removed-from-the-levelplay-sdk)
* [종속성 클래스 누락 오류 메시지](#missing-dependency-class-error-message)

## LevelPlayBannerPosition으로 배너 광고 위치 지정##specifying-banner-ad-position-with-levelplaybannerposition

### 오류##error

열거형이나 정수로 `LevelPlayBannerPosition`을 사용할 때 컴파일 오류가 발생하는 경우 그 이유는 버전 8.8.0에서 `LevelPlayBannerPosition`이 열거형에서 클래스로 업데이트되었기 때문입니다. 이 변경 사항은 코드에서 배너 위치를 참조해야 하는 방식에 영향을 줍니다.

### 해결 방법##resolution

레벨플레이 Unity 패키지 버전 8.8.0 및 8.8.1에서 `LevelPlayBannerPosition`은 열거형에서 클래스로 변경되었습니다. 업데이트된 API는 9개의 사전 정의된 배너 위치를 지원하며, `LevelPlayBannerPosition` 오브젝트를 생성하여 정확한 좌표(x, y)를 지정할 수 있습니다.

Unity 에디터 콘솔에서 `LevelPlayBannerPosition` 컴파일 오류가 표시되면 다음 예시를 참고하여 발생 가능한 원인과 해결 방법에 대해 알아봅니다.

#### 예제 1: 파라미터 기본값 오류##example-1:-parameter-default-value-error

기본 열거형 값이 있는 파라미터로 `LevelPlayBannerPosition`을 전달할 때 컴파일 오류가 발생할 수 있습니다. 이 문제를 해결하려면 대신 null을 사용합니다.

```csharp
// Use null for the default value, or pass a value explicitly
public LevelPlayBannerAd(string adUnitId, LevelPlayBannerPosition position = null) 
```

#### 예제 2: 잘못된 전환 또는 열거형 비교##example-2:-invalid-switch-or-enum-comparisons

코드가 switch 문을 사용하거나 `LevelPlayBannerPosition` 값을 열거형이나 정수로 비교하는 경우 컴파일 오류가 발생할 수 있습니다. 예시:

```csharp
switch (position) { 
case LevelPlayBannerPosition.BottomCenter: }
```

이제 `LevelPlayBannerPosition`이 클래스이므로 이 로직을 직접 오브젝트 비교로 대체합니다.

```csharp
if (position == LevelPlayBannerPosition.BottomCenter) { /* Handle case */ }
```

레이아웃 로직, 로깅, 분석 목적으로 필요한 경우 `Description` 프로퍼티를 사용하여 배너 위치를 비교할 수도 있습니다. 예시:

```csharp
if (position.Description == "BottomCenter") {
    Debug.Log("Banner is at bottom-center.");
}
```

## 중복된 클래스 오류 메시지##duplicated-classes-error-message

프로젝트를 만들거나 테스트할 때 중복된 클래스 오류 메시지(CSO433)가 나타납니다. 이 오류 메시지로 중복된 클래스와 해당 클래스가 나타나는 어셈블리를 식별할 수 있습니다. 다음은 중복된 클래스 오류 메시지 예제입니다.

* The type `IronSourceMediationSettings` exists in both `Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null` and `'Unity.LevelPlay, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null`

다음과 같은 이유로 중복된 클래스 오류가 표시됩니다.

* Unity 플러그인을 제거하지 않고 Ads Mediation 패키지 [업데이트](#updated-the-ads-mediation-package-without-removing-the-unity-plugin)
* Ads Mediation 패키지를 제거하지 않고 Unity 플러그인 [업데이트](#updated-unity)
* [중요한](#significant-ads-mediation-package-updates) Ads Mediation 패키지 업데이트

다음 섹션을 참고하여 이러한 문제의 설명과 해결 방법에 대해 알아보십시오.

### Unity 플러그인을 제거하지 않고 Ads Mediation 패키지 업데이트##updated-the-ads-mediation-package-without-removing-the-unity-plugin

**.unitypackage** 파일(Unity 플러그인)이 이미 설치된 상태에서 **Ads Mediation** 패키지를 통해 최신 버전의 Unity 레벨플레이가 업데이트되었습니다.

#### 해결 방법##resolution

.unitypackage 파일(Unity 플러그인)을 제거한 다음 Ads Mediation 패키지를 설치하거나 업데이트합니다. 플러그인을 제거하려면 다음 단계를 완료합니다.

1. Unity 에디터에서 프로젝트를 열어서 **Assets**로 이동합니다.
2. 사용하고 있는 레벨플레이 SDK 버전에 따라 **Assets**에서 다음 중 하나를 선택합니다.

* SDK v7.8.0 포함 이전인 경우: **IronSource**를 오른쪽 클릭하여 **Delete**를 선택합니다.
* SDK v8.0.0인 경우: **LevelPlay**를 오른쪽 클릭하여 **Delete**를 선택합니다.

> **Note:**
>
> 개발자 설정을 사용하는 경우, **Advanced Mediation Settings**에서 만든 앱 키나 선택 항목을 기록해 두시기 바랍니다. 최신 버전의 레벨플레이 SDK로 업데이트한 다음 이 값을 다시 입력할 수 있습니다.

### Ads Mediation 패키지를 제거하지 않고 Unity 플러그인 업데이트##updated-unity

**Ads Mediation**이 이미 설치된 상태에서 **.unitypackage** 파일을 통해 최신 버전의 Unity 레벨플레이가 업데이트되었습니다.

#### 해결 방법##resolution

Ads Mediation 패키지를 제거한 다음 Unity 플러그인을 설치하거나 업데이트합니다. 다음 단계에 따라 Unity 에디터에서 Ads Mediation 패키지를 제거합니다.

1. Unity 에디터에서 프로젝트를 열고 **Window** > **Package Management** > **Package Manager**로 이동합니다.
2. **Package Manager**에서 **Packages** > **In Project**를 선택합니다.
3. **Ads Mediation** > **Remove**를 선택합니다.
4. Unity 에디터에서 프로젝트를 열어서 **Assets**로 이동합니다.
5. 사용하고 있는 레벨플레이 SDK 버전에 따라 **Assets**에서 다음 중 하나를 선택합니다.

* SDK v7.8.0 포함 이전인 경우: **IronSource**를 오른쪽 클릭하여 **Delete**를 선택합니다.
* SDK v8.0.0인 경우: **LevelPlay**를 오른쪽 클릭하여 **Delete**를 선택합니다.

6. 설치된 경우 **Mobile Dependency Resolver**를 오른쪽 클릭하여 **Delete**를 선택합니다.

### 중요한 Ads Mediation 패키지 업데이트##significant-ads-mediation-package-updates

Ads Mediation 패키지가 초기 버전에서 가장 최신 버전으로 업데이트되었습니다.

#### 해결 방법##resolution

Ads Mediation 패키지에 중요한 업데이트가 필요하면 원활한 업그레이드 경로를 확보하기 위해 추가 단계가 필요할 수 있습니다.

예를 들어 v1.0.0에서 v8.0.0으로 업데이트를 진행하면 업데이트 시 추가 단계를 거쳐야 합니다. 자세히 알아보려면 Unity 패키지 관리자의 Ads Mediation 패키지 설명을 참고하십시오.

## 레벨플레이 SDK에서 스크립팅 기호 제거 불가##scripting-symbol-can't-be-removed-from-the-levelplay-sdk

레벨플레이 SDK에서 `LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 제거했지만, SDK에서 계속해서 자동으로 다시 생성됩니다.

### 원인##cause

SDK에서 `LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 제거하면 SDK는 항상 기호를 자동으로 다시 추가합니다. 레벨플레이 SDK Unity 패키지 버전 8.0.0부터 이 스크립팅 기호가 필요합니다.

### 해결 방법##solution

이 문제의 경우, 스크립팅 기호가 레벨플레이 SDK 버전 8.0.0부터 필요하기 때문에 알려진 해결 방법이 없습니다. 이 기호는 삭제하면 항상 자동으로 다시 추가됩니다.

## 종속성 클래스 누락 오류 메시지##missing-dependency-class-error-message

Ads Mediation 패키지를 설치한 후 종속성 클래스 오류 메시지가 나타납니다. 다음은 종속성 클래스 누락 경고 메시지 예제입니다.

* The type or namespace name `Core` does not exist in the namespace `Unity.Services`.
* The type or namespace name `Newtonsoft` could not be found.
* The type or namespace name `EditorGameServiceFlagEnabler` could not be found.

### 원인##cause

레벨플레이 SDK Unity 패키지에서 `com.unity.services.core` 종속성이 제거되거나 설치에 실패하면 이런 문제가 발생할 수 있습니다. 이 종속성이 누락되면 콘솔에는 어떤 종속성 클래스를 찾을 수 없는지 식별하는 오류 메시지가 표시됩니다.

### 해결 방법##resolution

누락된 `com.unity.services.core` 종속성 문제를 해결하는 방법은 두 가지입니다. 이름별로 Services Core 패키지를 수동으로 설치하거나 `LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 제거하는 것입니다.

#### 패키지 관리자에서 Services Core 패키지 설치##install-the-services-core-package-in-package-manager

다음 내용에 따라 누락된 종속성 문제를 해결하기 위해 Unity 패키지 관리자에서 Services Core 패키지를 설치합니다.

1. Unity 에디터에서 프로젝트를 열고 **Window** > **Package Management** > **Package Manager**로 이동합니다.
2. **Package Manager** 창에서 **+** 아이콘을 선택하여 드롭다운 메뉴를 열고 \*\*Install package by name...\*\*을 선택하여 패키지 이름을 수동으로 입력합니다.
3. **Name** 필드에 `com.unity.services.core`를 입력하고 **Install**을 선택합니다.

#### LEVELPLAY\_DEPENDENCIES\_INSTALLED 스크립팅 기호 제거##remove-the-levelplay\_dependencies\_installed-scripting-symbol

`LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 사용하여 Services Core 패키지를 복원할 수도 있습니다. 제거가 완료되면 스크립팅 기호가 자동으로 다시 추가됩니다. 재설치 프로세스를 진행하면 `com.unity.services.core` 패키지 역시 자동으로 다시 설치됩니다. 에디터에 Services Core 패키지가 표시되지 않으면 이 방법을 사용합니다.

누락된 종속성 문제를 해결하려면 다음과 같이 레벨플레이 SDK Unity 패키지에서 `LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 제거합니다.

1. Unity 에디터에서 프로젝트를 열고 **Edit** > **Project Settings** > **Player**로 이동합니다.
2. **Other Settings** 창에서 **Script Compilation**이 나오도록 아래로 스크롤합니다.
3. 마이너스 기호(**−**)를 선택하여 기호를 제거하고 **LEVELPLAY\_DEPENDENCIES\_INSTALLED**를 선택합니다.
4. **Apply**를 선택하여 변경 사항을 저장합니다.

## 에디터 6.0 이상 UPM 패키지 설치 오류##editor-6.0+-upm-package-install-error

### 오류##error

Unity 에디터 6.0 이상에서 Ads Mediation(레벨플레이)용 `.unitypackage` 를 사용하고 있는 경우, Services > Ads Mediation(LevelPlay) > Install 아래에서 **Quick Install 버튼**을 클릭하면 실수로 UPM 패키지를 설치할 수 있습니다. 이로 인해 컴파일 오류가 발생하고 패키지가 정상적으로 작동하지 않을 수 있습니다.

### 해결 방법##resolution

이를 간단하게 해결할 수 있는 방법은 패키지 관리자에서 UPM 패키지를 제거하는 것입니다.

1. Unity 에디터 상단 메뉴에서 **Window** > **Package Management** > **Package Manager**를 선택합니다.
2. 설치된 **Ads Mediation** 패키지를 찾습니다.
3. 오른쪽 패널에서 세부 정보를 펼쳐 확인합니다.
4. **Remove를 클릭하여** UPM 패키지를 제거합니다.

위 단계들을 따라 하면 `.unitypackage`를 정상적으로 복원하고 문제를 해결할 수 있습니다.

## Ads Mediation 패키지 제거##remove-the-ads-mediation-package

Unity 에디터에서 Ads Mediation을 제거하려면 다음 세 가지 작업을 완료합니다.

1. Ads Mediation 패키지를 [제거합니다](#remove-the-ads-mediation-package).
2. Ads Mediation 에셋을 [삭제합니다](#delete-ads-mediation-assets).
3. 레벨플레이 스크립팅 기호를 [삭제합니다](#delete-the-levelplay-scripting-symbol).

다음 단계에 따라 Unity 에디터에서 Ads Mediation 패키지를 제거합니다.

1. Unity 에디터에서 프로젝트를 열고 **Window** > **Package Management** > **Package Manager**로 이동합니다.
2. Package Manager에서 **Packages** > **In Project**를 선택합니다.
3. **Ads Mediation** > **Remove**를 선택합니다.

## Ads Mediation 에셋 삭제##delete-ads-mediation-assets

Ads Mediation 패키지를 제거할 때 레벨플레이 에셋도 마찬가지로 삭제합니다. 에셋이 설치된 경우 추가 파일 삭제가 필요할 수도 있습니다. 필수 Ads Mediation 에셋을 삭제하는 방법은 다음 지침을 참고하시기 바랍니다.

### 레벨플레이 에셋##levelplay-assets

Ads Mediation 패키지를 제거한 후 레벨플레이 에셋을 삭제해야 합니다. 사용하는 레벨플레이 SDK 버전에 따라 프로세스가 약간 달라질 수 있습니다. 다음 단계를 사용하여 레벨플레이 에셋을 제거합니다.

1. Unity 에디터에서 프로젝트를 열어서 **Assets**로 이동합니다.
2. 사용하고 있는 레벨플레이 SDK 버전에 따라 **Assets**에서 다음 중 하나를 선택합니다.

* SDK v7.8.0 포함 이전인 경우: **IronSource**를 오른쪽 클릭하여 **Delete**를 선택합니다.
* SDK v8.0.0인 경우: **LevelPlay**를 오른쪽 클릭하여 **Delete**를 선택합니다.

### Ads Mediation 샘플##ads-mediation-sample

Ads Mediation 샘플을 임포트한 경우 Ads Mediation 패키지 제거 시 샘플도 삭제합니다. 다음 단계를 사용하여 Ads Mediation 샘플을 삭제합니다.

1. Unity 에디터에서 프로젝트를 열어서 **Assets** > **Samples** > **Ads Mediation**으로 이동합니다.
2. **Ads Mediation sample**을 오른쪽 클릭하여 **Delete**를 선택합니다.

### 모바일 종속성 리졸버##mobile-dependency-resolver

설치된 경우 다음 내용에 따라 모바일 종속성 리졸버도 삭제합니다.

1. Unity 에디터에서 프로젝트를 열어서 **Assets**로 이동합니다.
2. **Mobile Dependency Resolver**를 오른쪽 클릭하여 **Delete**를 선택합니다.

## 레벨플레이 스크립팅 기호 삭제##delete-the-levelplay-scripting-symbol

Ads Mediation 패키지와 해당 에셋을 삭제한 후 다음 단계를 사용하여 `LEVELPLAY_DEPENDENCIES_INSTALLED` 스크립팅 기호를 제거합니다.

1. Unity 에디터의 프로젝트에서 **Edit** > **Project Settings**로 이동합니다.
2. 설정 목록에서 **Player or File** > **Build Settings** > **Player Settings**로 이동합니다.
3. **Other Settings** > **Script Compilation**이 나오도록 아래로 스크롤합니다.
4. **LEVELPLAY\_DEPENDENCIES\_INSTALLED** 스크립팅 기호를 오른쪽 클릭하고 **Delete**를 선택합니다.
