# LevelPlay インテグレーションのトラブルシューティング

> LevelPlay インテグレーションの一般的な問題のトラブルシューティングを行います。

> **Note:**
>
> LevelPlay インテグレーションガイドをお探しですか? Unity エディターで LevelPlay によるメディエーションを設定する方法については、[LevelPlay インテグレーションの管理](/grow/levelplay/sdk/unity/package-integration.md) を参照してください。

Unity エディターに LevelPlay を統合すると、問題が発生する場合があります。以下の種類の問題については、このガイドを使用してトラブルシューティングを行ってください。

* [重複クラスに関するエラーメッセージ](#duplicated-classes-error-message)
* [LevelPlay 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` を enum または int として使用するときにコンパイルエラーが発生する場合は、バージョン 8.8.0 で `LevelPlayBannerPosition` が enum からクラスに更新されたことが原因です。この変更は、バナー位置をコードで参照する方法に影響します。

### 解決方法##resolution

LevelPlay Unity パッケージ バージョン 8.8.0 および 8.8.1 では、`LevelPlayBannerPosition` は enum からクラスに変更されました。更新された API は、9 つの定義済みバナー位置をサポートし、`LevelPlayBannerPosition` オブジェクトを作成することで正確な (x、y) 座標を指定できます。

Unity エディターコンソールに `LevelPlayBannerPosition` のコンパイルエラーが表示される場合は、以下の例を参照して、考えられる原因とその解決方法を理解してください。

#### 例 1: パラメーター初期値エラー##example-1:-parameter-default-value-error

デフォルトの enum 値を持つパラメーターとして `LevelPlayBannerPosition` を渡すと、コンパイルエラーが発生する場合があります。これを修正するには、代わりに null を使用します。

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

#### 例 2: 無効なスイッチまたは enum の比較##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` (タイプ `IronSourceMediationSettings` は `Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null`  と `'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)
* Ads Mediation パッケージの [大幅な](#significant-ads-mediation-package-updates) アップデート

このような問題の説明と解決方法については、以下のセクションを参照してください。

### Unity プラグインを削除せずに Ads Mediation パッケージを更新した場合##updated-the-ads-mediation-package-without-removing-the-unity-plugin

**.unitypackage** ファイル (Unity プラグイン) がすでにインストールされている状態で、**Ads Mediation** パッケージを使用して Unity LevelPlay の最新バージョンにアップデートしました。

#### 解決方法##resolution

Ads Mediation パッケージをインストールまたはアップデートする前に、.unitypackage ファイル (Unity プラグイン) を削除します。プラグインを削除するには、以下の手順を実行します。

1. Unity エディターでプロジェクトを開き、**Assets** (アセット) に移動します。
2. **Assets** で、使用している LevelPlay SDK のバージョンに応じて、以下のどれかを行います。

* SDK v7.8.0 以前: **ironSource** を右クリック > **Delete** (削除)。
* SDK v8.0.0: **LevelPlay** を右クリック > **Delete** (削除)。

> **Note:**
>
> 開発者設定を使用している場合は、アプリキーや **Advanced Mediation Settings** (メディエーションの詳細設定) で選択した項目をすべて記録してください。最新バージョンの LevelPlay SDK にアップデートした後に、これらの値を再度入力できます。

### Ads Mediation パッケージを削除せずに Unity プラグインを更新した場合##updated-Unity

**Ads Mediation** がすでにインストールされている状態で、**.unitypackage** ファイルを使用して Unity LevelPlay の最新バージョンにアップデートしました。

#### 解決方法##resolution

Unity プラグインをインストールまたはアップデートする前に、Ads Mediation パッケージを削除します。以下の手順に従って、Ads Mediation パッケージを Unity エディターから削除します。

1. Unity エディターでプロジェクトを開き、**ウィンドウ**> **Package Management**> **Package Manager** に移動します。
2. **Package Manager** で、**Packages** (パッケージ) > **In Project** (プロジェクト内) を選択します。
3. **Ads Mediation** > **Remove** (削除) を選択します。
4. Unity エディターで、プロジェクトから **Assets** (アセット) に移動します。
5. **Assets** で、使用している LevelPlay SDK のバージョンに応じて、以下のどれかを行います。

* 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 Package Manager の Ads Mediation パッケージの説明を参照してください。

## LevelPlay SDK からスクリプトシンボルを削除できない##scripting-symbol-can't-be-removed-from-the-levelplay-sdk

LevelPlay SDK から `LEVELPLAY_DEPENDENCIES_INSTALLED` スクリプトシンボルを削除しても、自動的に SDK に再出現し続けます。

### 原因##cause

SDK から `LEVELPLAY_DEPENDENCIES_INSTALLED` スクリプトシンボルを削除すると常に、スクリプトシンボルが自動的に SDK に追加し直されます。LevelPlay SDK Unity パッケージのバージョン 8.0.0 から、このスクリプトシンボルは必須となっています。

### 解決策##solution

LevelPlay 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`. (型または名前空間の名前 `Core`  が名前空間 `Unity.Services` に存在しません)
* The type or namespace name `Newtonsoft` could not be found. (型または名前空間の名前 `Newtonsoft` ファイル が見つかりませんでした)
* The type or namespace name `EditorGameServiceFlagEnabler` could not be found. (型または名前空間の名前 `EditorGameServiceFlagEnabler` ファイル が見つかりませんでした)

### 原因##cause

これは、LevelPlay SDK Unity パッケージにある `com.unity.services.core` の依存関係が削除されたか、インストールできなかった場合に発生します。この依存関係が不足している場合、どの依存関係クラスが見つからなかったかを示すエラーメッセージがコンソールに表示されます。

### 解決方法##resolution

欠落している `com.unity.services.core` 依存関係を解決するには、2 つの方法があります: 名前を指定して Services Core パッケージを手動でインストールするか、`LEVELPLAY_DEPENDENCIES_INSTALLED` スクリプトシンボルを削除します。

#### Package Manager で Services Core パッケージをインストールする##install-the-services-core-package-in-package-manager

欠落している依存関係を解決するには、以下のようにして Unity Package Manager で Services Core パッケージをインストールします。

1. Unity エディターでプロジェクトを開き、**ウィンドウ**> **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 パッケージが表示されない場合に使用できます。

依存関係の欠落を解決するには、以下のようにして LevelPlay 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 (LevelPlay) に `.unitypackage` を使用している場合、(Services (サービス) > Ads Mediation (LevelPlay) > Install (インストール) にある) **Quick Install** (クイックインストール) を選択すると、UPM パッケージが誤ってインストールされる場合があります。これにより、コンパイルエラーが発生し、パッケージの機能が停止することがあります。

### 解決方法##resolution

簡易的な解決策は、Package Manager を使用して UPM パッケージを削除することです。

1. Unity エディターの上部メニューに移動し、**ウィンドウ**> **Package Management**> **Package Manager** を選択します。
2. インストール済みの **Ads Mediation** パッケージを探します。
3. 展開して、右側のパネルに詳細を表示します。
4. **Remove (削除**) を選択して、UPM パッケージをアンインストールします。

これらの手順を実施することで、`.unitypackage` を正常な状態に復元し、問題を解決できます。

## Ads Mediation パッケージを削除する##remove-the-ads-mediation-package

Unity エディターから Ads Mediation を削除するには、以下の 3 つのタスクを実行します。

1. Ads Mediation パッケージを [削除](#remove-the-ads-mediation-package) します。
2. Ads Mediation のアセットを [削除](#delete-ads-mediation-assets) します。
3. LevelPlay のスクリプトシンボルを [削除](#delete-the-levelplay-scripting-symbol) します。

以下の手順に従って、Ads Mediation パッケージを Unity エディターから削除します。

1. Unity エディターでプロジェクトを開き、**ウィンドウ**> **Package Management**> **Package Manager** に移動します。
2. Package Manager で、**Packages** (パッケージ) > **In Project** (プロジェクト内) を選択します。
3. **Ads Mediation** > **Remove** (削除) を選択します。

## Ads Mediation のアセットの削除##delete-ads-mediation-assets

Ads Mediation パッケージを削除する際には、LevelPlay のアセットも削除します。また、インストールされている場合は追加のファイルの削除も必要になることがあります。Ads Mediation の必要なアセットを削除する手順については、以下を参照してください。

### LevelPlay のアセット##levelplay-assets

Ads Mediation パッケージを削除した後は、LevelPlay のアセットを削除する必要があります。このプロセスは、使用している LevelPlay SDK のバージョンによって少し変わります。以下の手順に従って、LevelPlay のアセットを削除します。

1. Unity エディターでプロジェクトを開き、**Assets** (アセット) に移動します。
2. **Assets** で、使用している LevelPlay SDK のバージョンに応じて、以下のどれかを行います。

* 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** (Ads Mediation サンプル) を右クリックし、**Delete** (削除) を選択します。

### Mobile Dependency Resolver##mobile-dependency-resolver

Mobile Dependency Resolver がインストールされている場合は、こちらも以下を実行して削除してください。

1. Unity エディターでプロジェクトを開き、**Assets** (アセット) に移動します。
2. **Mobile Dependency Resolver** を右クリックし、**Delete** (削除) を選択します。

## LevelPlay のスクリプトシンボルの削除##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** (削除) を選択します。
