# Unity Ads から LevelPlay への移行

> Advertisement Legacyパッケージを使用したUnity Ads SDKの直接インテグレーションから、Ads Mediationパッケージを使用したLevelPlayインテグレーションに移行します。

> **Note:**
>
> 2026 年 4 月 1 日より、Advertisement Legacy パッケージを介した直接インテグレーションによって Unity Ads で収益化するアプリケーションでは、広告のパフォーマンスが低下する可能性があります。パフォーマンスの削減を回避するには、Unity Adsを入札者として統合する方式に切り替えます。
>
> Unity Ads ネットワークは、直接インテグレーションを使用するすべてのアプリケーションのサポートと提供を継続します。ただし、収益とパフォーマンスを最大化するために推奨されるベストプラクティスは、Unityの広告メディエーションプラットフォームであるLevelPlay用のAds Mediationパッケージ[をインストールする](/grow/levelplay/sdk/unity/package-integration.md.md)ことです。

このガイドでは、Unity Ads SDK の直接インテグレーションから LevelPlay SDK インテグレーションにプロジェクトを遷移する方法を、一般的なユースケースの API マッピングを含めて説明します。詳細については、[LevelPlay インテグレーションガイド](/grow/levelplay/sdk/unity/package-integration.md)を参照してください。LevelPlay に移行する主な手順については、以下の表を参照してください。

| トピック                                                      | 説明                                                                       |
| --------------------------------------------------------- | ------------------------------------------------------------------------ |
| [広告メディエーションへの移行](#migrate-to-ads-mediation)               | 古い機能の Unity Ads から LevelPlay にプロジェクトを遷移します。                              |
| [マップ API と更新コード](#map-apis-and-update-code)               | 古い機能初期化、バナー、インタースティシャル、およびリワード型広告呼び出しを、LevelPlay と同等の機能に置き換えます。          |
| [テストと検証](#test-and-validate)                              | オプションで、LevelPlay Test Suite とビルトインインテグレーション検証ツールを使用して新しいインテグレーションを検証します。 |
| [API と特徴マッピング リファレンス](#api-and-feature-mapping-reference) | 古い機能の Unity Ads 関数とパラメータが対応する LevelPlay オプションにどのようにマップされるかを確認します。        |
| [古い機能パッケージの削除](#remove-the-legacy-package)                | Advertisement Legacy パッケージをアンインストールし、プロジェクトに残っている依存関係を解決します。             |

> **Important:**
>
> LevelPlay を Advertisement Legacy パッケージを使用しているプロジェクトにインストールすると、そのプロジェクトが正しく機能しない場合があります。[API を LevelPlay にマッピング](#map-apis-and-update-code)した後に古い機能パッケージを削除する必要があります。

> **Note:**
>
> 移行プロセスは、Unity Package Manager (UPM) を通じて Advertisement Legacy パッケージがインストールされた Unity プロジェクトにのみ関連します。

## 前提条件##prerequisites

[LevelPlay ダッシュボード](https://platform.ironsrc.com/partners/identity/login)にアクセスできることを確認します。

## Ads Mediation に移行##migrate-to-ads-mediation

古い機能の Unity Ads インテグレーションを LevelPlay に置き換えるには、次の手順に従います。

### LevelPlay パッケージをインストールする##install-the-levelplay-package

Unity Package Manager を使用して LevelPlay パッケージをインストールするには、次の手順に従います。

1. Unity エディターで、**Window** (ウィンドウ) > **Package Manager** (パッケージマネージャー) に移動します。
2. **Packages (パッケージ):Unity Registry** (パッケージ: Unity Registry) を選択します。
3. **Ads Mediation** を検索します。
4. 最新バージョンの **Install (インストール**) を選択します。

### 依存関係の設定##configure-dependencies

LevelPlay では、Android および iOS ライブラリを管理するために、モバイル依存関係リゾルバや Unity 外部依存関係マネージャー (EDM4U) などの依存関係解決ツールが必要です。

依存関係解決ツールがプロジェクトにインストールされていることを確認します。プロジェクトに依存関係解決ツールがすでに含まれている場合は、それを維持します。LevelPlay のインストール後にモバイル依存関係リゾルバのインストールを求めるプロンプトが表示されたら、**Yes** を選択します。

### LevelPlay ダッシュボードの設定##configure-the-levelplay-dashboard

LevelPlay ダッシュボード を設定して、アプリケーションを登録してメディエーションに必要な広告ユニットを作成します。

1. [LevelPlay ダッシュボード](https://platform.ironsrc.com/partners/identity/login)にログインします。
2. **Add App** (アプリケーションの追加) を選択し、プロンプトに従ってアプリケーションを登録します。
3. **広告ユニット**に移動し、管理するアプリケーションを選択します。
4. 広告ユニット（バナー、インタースティシャル、またはリワード）を作成します。広告ユニットの詳細については、[広告ユニットの管理](/grow/levelplay/platform/get-started/ad-units.md) のドキュメントを参照してください。

> **Note:**
>
> 広告単位を作成すると、ダッシュボードに各広告の状態、名前、広告単位ID、広告形式が表示されます。広告単位情報には、広告単位にリンクされているネットワークとメディエーショングループの数も表示されます。インスタンス設定とメディエーション管理ページにアクセスするネットワークまたはグループの数を選択できます。

5. LevelPlay ダッシュボードの Apps (アプリ) ページで、**アプリケーションキー**と**広告単位 ID** を見つけて保存します。これらは、[API をマップ](#map-apis-and-update-code)するために必要です。

## マップ API と更新コード##map-apis-and-update-code

既存の `Advertisement` クラス呼び出しを対応する `LevelPlay` メソッドに置き換えます。古い機能の Unity Ads SDK とは異なり、LevelPlay では広告ユニットのインスタンスを作成する必要があります。広告ユニットは、任意の設定パラメーターを持つ再利用可能なインスタンスです。以下のサンプルを参照してSDKを初期化し、バナー広告、インタースティシャル広告、およびリワード広告を実装します。

### LevelPlay SDK の初期化##initialize-the-levelplay-sdk

LevelPlay SDK は、ゲーム ID の代わりに アプリケーション キー を使用します。イベントリスナーを登録し、SDK を初期化するには、以下のサンプルを参照してください。

> **Note:**
>
> 広告オブジェクトを作成する前に`OnInitSuccess`コールバックを受信します。

```csharp
LevelPlay.OnInitSuccess += SdkInitializationCompletedEvent;
LevelPlay.OnInitFailed += SdkInitializationFailedEvent;
LevelPlay.Init("YOUR_APPKEY");

void SdkInitializationCompletedEvent(LevelPlayConfiguration config){
    Debug.Log($"[LevelPlaySample] Received SdkInitializationCompletedEvent with Config: {config}");
}

void SdkInitializationFailedEvent(LevelPlayInitError error){
    Debug.Log($"[LevelPlaySample] Received SdkInitializationFailedEvent with Error: {error}");	
}
```

### バナー広告の実装##implement-banner-ads

バナー広告を実装するには、以下のサンプルを参照してください。

```csharp
public class BannerAdSample {
  private LevelPlayBannerAd bannerAd;
  
  void CreateBannerAd() {
    // Create ad configuration - optional
    var adConfig = new LevelPlayBannerAd.Config.Builder()
      .SetSize(LevelPlayAdSize.BANNER)
      .SetPlacementName("placementName")
      .SetPosition(LevelPlayBannerPosition.BottomCenter)
      .SetDisplayOnLoad(true)
      .SetRespectSafeArea(true)
      .Build();
        
    // Create banner instance
    bannerAd = new LevelPlayBannerAd("YOUR_BANNER_AD_UNIT_ID", adConfig);
    
    // Subscribe BannerAd events
    bannerAd.OnAdLoaded += BannerOnAdLoadedEvent;
    bannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;
    bannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;
    bannerAd.OnAdDisplayFailed += BannerOnAdDisplayFailedEvent;
    bannerAd.OnAdClicked += BannerOnAdClickedEvent;
    bannerAd.OnAdCollapsed += BannerOnAdCollapsedEvent;
    bannerAd.OnAdLeftApplication += BannerOnAdLeftApplicationEvent;
    bannerAd.OnAdExpanded += BannerOnAdExpandedEvent;
  }
  
  public void LoadBannerAd() {
    //Load the banner ad 
    bannerAd.LoadAd();
  }
  
  public void ShowBannerAd() {
    //Show the banner ad, call this method only if you turned off the auto show when you created this banner instance.
    bannerAd.ShowAd();
  }
  
  public void HideBannerAd() {
    //Hide banner
    bannerAd.HideAd();
  }
  
  public void DestroyBannerAd() {
    //Destroy banner
    bannerAd.DestroyAd();
  }
  
  //Implement BannerAd Events
  public void BannerOnAdLoadedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) {}
  public void BannerOnAdClickedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error){}
  public void BannerOnAdCollapsedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLeftApplicationEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdExpandedEvent(LevelPlayAdInfo adInfo) {}
}
```

### インタースティシャル広告の実装##implement-interstitial-ads

インタースティシャル広告を実装するには、以下のサンプルを参照してください。

```csharp
public class InterstitialAdSample {
    private LevelPlayInterstitialAd interstitialAd;
    
    void CreateInterstitialAd() {
        // Create InterstitialAd instance
        interstitialAd = new LevelPlayInterstitialAd("YOUR_INTERSTITIAL_AD_UNIT_ID");

        // Subscribe InterstitialAd events
        interstitialAd.OnAdLoaded += InterstitialOnAdLoadedEvent;
        interstitialAd.OnAdLoadFailed += InterstitialOnAdLoadFailedEvent;
        interstitialAd.OnAdDisplayed += InterstitialOnAdDisplayedEvent;
        interstitialAd.OnAdDisplayFailed += InterstitialOnAdDisplayFailedEvent;
        interstitialAd.OnAdClicked += InterstitialOnAdClickedEvent;
        interstitialAd.OnAdClosed += InterstitialOnAdClosedEvent;
        interstitialAd.OnAdInfoChanged += InterstitialOnAdInfoChangedEvent;
    }
    
    void LoadInterstitialAd() {
        // Load or reload InterstitialAd
        interstitialAd.LoadAd();
    }
    
    void ShowInterstitialAd() {
        // Show InterstitialAd, check if the ad is ready before showing
        if (interstitialAd.IsAdReady()) {
            interstitialAd.ShowAd();
        }
    }
    
    void DestroyInterstitialAd() {
        // Destroy InterstitialAd
        interstitialAd.DestroyAd();
    }
    
    // Implement InterstitialAd events
    void InterstitialOnAdLoadedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdLoadFailedEvent(LevelPlayAdError error) { }
    void InterstitialOnAdClickedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdDisplayedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error) { }
    void InterstitialOnAdClosedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdInfoChangedEvent(LevelPlayAdInfo adInfo) { }
}
```

### リワード広告##rewarded-ads

リワード広告を実装するには、以下のサンプルを参照してください。

```csharp
public class LevelPlaySample : MonoBehaviour
{
    private LevelPlayRewardedAd rewardedAd;
    
    void CreateRewardedAd()
    {
        rewardedAd = new LevelPlayRewardedAd("YOUR_REWARDED_AD_UNIT_ID");
        rewardedAd.OnAdLoaded += OnAdLoaded;
        rewardedAd.OnAdLoadFailed += OnAdLoadFailed;
        rewardedAd.OnAdDisplayed += OnAdDisplayed;
        rewardedAd.OnAdDisplayFailed += OnAdDisplayFailed;
        rewardedAd.OnAdRewarded += OnAdRewarded;
        rewardedAd.OnAdClicked += OnAdClicked;
        rewardedAd.OnAdClosed += OnAdClosed;
        rewardedAd.OnAdInfoChanged += OnAdInfoChanged;
    }
    
    void LoadRewardedAd()
    {
        rewardedAd.LoadAd();
    }
    
    void ShowRewardedAd(string placementName = null)
    {
        if (rewardedAd.IsAdReady() && !LevelPlayRewardedAd.IsPlacementCapped(placementName))
        {
            rewardedAd.ShowAd(placementName);
        }
    }
    
    bool CheckIfRewardedAdIsReady()
    {
        return rewardedAd.IsAdReady();
    }
    
    bool CheckIfPlacementIsCapped(string placementName)
    {
        return LevelPlayRewardedAd.IsPlacementCapped(placementName);
    }
    
    void OnAdLoaded(LevelPlayAdInfo adInfo)
    {
        Debug.Log($"Rewarded ad loaded with ad info {adInfo}");
    }
    
    void OnAdLoadFailed(LevelPlayAdError adError)
    {
        Debug.Log($"Rewarded ad failed to load with ad error {adError}");
    }
   
    void OnAdDisplayed(LevelPlayAdInfo adInfo)
    {
        Debug.Log($"Rewarded ad displayed with ad info {adInfo}");
    }
       
    void OnAdDisplayFailed(LevelPlayAdDisplayInfoError adInfoError)
    {
        Debug.Log($"Rewarded ad failed to display with ad info and error {adInfoError}");
    }
    
    void OnAdRewarded(LevelPlayAdInfo adInfo, LevelPlayReward adReward)
    {
        Debug.Log($"Rewarded ad gained reward with adInfo {adInfo} and reward {adReward}");
    }
    
    void OnAdClicked(LevelPlayAdInfo adInfo)
    {
        Debug.Log($"Rewarded ad clicked with ad info {adInfo}");
    }
    
    void OnAdClosed(LevelPlayAdInfo adInfo)
    {
        Debug.Log($"Rewarded ad closed with ad info {adInfo}");
    }
    
    void OnAdInfoChanged(LevelPlayAdInfo adInfo)
    {
        Debug.Log($"Rewarded ad info changed with ad info {adInfo}");
    }    
}
```

## テストと検証##test-and-validate

インテグレーションを検証するには、アプリケーションをビルドし、検証テストを実行します。

### ビルドとテスト##build-and-test

Android または iOS 用のアプリケーションをビルドしてインテグレーションをテストします。LevelPlay ダッシュボードで無効にするまで、アプリケーションはテストモードのままです。

### テストスイートの起動 (任意)##launch-the-test-suite-optional

LevelPlay インテグレーションテストスイートを使用して、各広告ネットワークが正しく設定されていることを確認します。

アプリケーションでテストスイートを有効にするには、初期化を設定する前に `setMetaData` API を呼び出します。

```csharp
LevelPlay.SetMetaData("is_test_suite", "enable");
```

コールコールバックが成功したら、テストスイートを起動します。

```csharp
LevelPlayEvents.onSdkInitializationCompletedEvent += SdkInitializationCompletedEvent;

private void SdkInitializationCompletedEvent(){
    ...
    //Launch test suite
    LevelPlay.LaunchTestSuite();
}
```

### インテグレーションの検証##validate-the-integration

以下の API を呼び出して、パッケージと依存関係の内部チェックを実行します。

```csharp
LevelPlay.ValidateIntegration();
```

## 古い機能パッケージの削除##remove-the-legacy-package

すべての広告が正しく機能し、プロジェクトに古い機能の広告 API がないことを確認したら、次のステップに従って Advertisement Legacy パッケージを削除します。

1. Unity エディターで、**Window** (ウィンドウ) > **Package Manager** (パッケージマネージャー) に移動します。
2. **Packages (パッケージ):プロジェクト内**。
3. **Advertisement Legacy** を見つけて選択します。
4. **Remove (削除**) を選択します。

## API と特徴マッピング リファレンス##api-and-feature-mapping-reference

以下の表に、古い機能の Unity Ads SDK API パラメータを LevelPlay API パラメータにマップします。

| ユースケース               | Unity Ads APIパラメーター                                                       | LevelPlay パラメーター                                                                                                                                                       | ノート                          |
| -------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| 初期化 ID               | `gameId`                                                                  | `appKey`                                                                                                                                                               | Android と iOS の両方に適用可能       |
| SDK の初期化             | `Advertisement.Initialize(_gameId, _testMode, this);`                     | `LevelPlay.Init(appKey);`                                                                                                                                              | LevelPlay はテストモードをサポートしていません |
| 初期化成功イベント            | `IUnityAdsInitializationListener.OnInitializationComplete()`              | `LevelPlay.OnInitSuccess`                                                                                                                                              |                              |
| Init failed イベント     | `IUnityAdsInitializationListener.OnInitializationFailed(error, message)`  | `LevelPlay.OnInitFailed`                                                                                                                                               |                              |
| 初期化されています            | `Advertisement.isInitialized`                                             | サポートされていません                                                                                                                                                            | LevelPlay ではサポートされていません      |
| メタデータの設定             | `Advertisement.SetMetaData(metaData)`                                     | `LevelPlay.SetMetaData(key, value)`                                                                                                                                    |                              |
| ロードバナー               | `Advertisement.Banner.Load(adUnitId, BannerLoadOptions)`                  | `bannerAd.LoadAd();`                                                                                                                                                   | インスタンスを作成する必要がある             |
| バナーのディスプレイ           | `Advertisement.Banner.Show(adUnitId, BannerOptions)`                      | `bannerAd.ShowAd()`                                                                                                                                                    | インスタンスを作成する必要がある             |
| バナー位置の設定             | `Advertisement.Banner.SetPosition(BannerPosition.BOTTOM_CENTER)`          | `LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(adUnitId, LevelPlayAdSize.BANNER, LevelPlayBannerPosition.TopLeft);`                                               | コンストラクターまたはビルダーで渡されるユースケース   |
| バナーのロードオプション         | `BannerLoadOptions { loadCallback, errorCallback }`                       | `bannerAd.OnAdLoaded`および`bannerAd.OnAdLoadFailed`                                                                                                                      |                              |
| バナーオプション             | `BannerOptions { clickCallback, hideCallback, showCallback }`             | `bannerAd.OnAdDisplayed`および`bannerAd.OnAdDisplayFailed`および`bannerAd.OnAdClicked`および`bannerAd.OnAdCollapsed`および`bannerAd.OnAdLeftApplication`および`bannerAd.OnAdExpanded` |                              |
| オプションを表示             | `Advertisement.Show(...)` の`ShowOptions { resultCallback }`               | `bannerAd.OnAdDisplayed`および`bannerAd.OnAdDisplayFailed`および`bannerAd.OnAdClicked`および`bannerAd.OnAdCollapsed`および`bannerAd.OnAdLeftApplication`および`bannerAd.OnAdExpanded` |                              |
| 非表示バナー               | `Advertisement.Banner.Hide()`                                             | `bannerAd.HideAd()`                                                                                                                                                    | インスタンスを作成する必要がある             |
| バナークリック              | `BannerOptions.clickCallback`                                             | `bannerAd.OnAdClicked`                                                                                                                                                 | インスタンスのイベントコールバック            |
| バナー表示                | `BannerOptions.showCallback`                                              | `bannerAd.OnAdDisplayed`                                                                                                                                               | インスタンスのイベントコールバック            |
| バナー非表示               | `BannerOptions.hideCallback`                                              | サポートされていません                                                                                                                                                            |                              |
| リワード型広告のロード          | `Advertisement.Load(adUnitId, IUnityAdsLoadListener)`                     | `rewardedAd.LoadAd();`                                                                                                                                                 | インスタンスを作成する必要があります           |
| リワード広告の表示            | `Advertisement.Show(adUnitId, IUnityAdsShowListener)`                     | `rewardedAd.ShowAd();`                                                                                                                                                 | インスタンスを作成する必要があります           |
| ロード インタースティシャル       | `Advertisement.Load(adUnitId, IUnityAdsLoadListener)`                     | `interstitialAd.LoadAd();`                                                                                                                                             | インスタンスを作成する必要がある             |
| インタースティシャルを表示        | `Advertisement.Show(adUnitId, IUnityAdsShowListener)`                     | `interstitialAd.ShowAd();`                                                                                                                                             | インスタンスを作成する必要がある             |
| Ad loaded (ロードされた広告) | `IUnityAdsLoadListener.OnUnityAdsAdLoaded(adUnitId)`                      | `interstitialAd.OnAdLoaded`または`rewardedAd.OnAdLoaded`                                                                                                                  | インスタンスのイベントコールバック            |
| 広告のロードに失敗しました        | `IUnityAdsLoadListener.OnUnityAdsFailedToLoad(adUnitId, error, message)`  | `interstitialAd.OnAdLoaded`または`rewardedAd.OnAdLoaded`                                                                                                                  | インスタンスのイベントコールバック            |
| 広告の表示に失敗しました         | `IUnityAdsShowListener.OnUnityAdsShowFailure(adUnitId, error, message)`   | `interstitialAd.OnAdDisplayFailed`または`rewardedAd.OnAdDisplayFailed`                                                                                                    | インスタンスのイベントコールバック            |
| 広告表示開始               | `IUnityAdsShowListener.OnUnityAdsShowStart(adUnitId)`                     | `interstitialAd.OnAdDisplayed`または`rewardedAd.OnAdDisplayFailed`                                                                                                        | インスタンスのイベントコールバック            |
| 広告表示のクリック            | `IUnityAdsShowListener.OnUnityAdsShowClick(adUnitId)`                     | `interstitialAd.OnAdClicked`または`rewardedAd.OnAdDisplayFailed`                                                                                                          | インスタンスのイベントコールバック            |
| 広告表示が完了しました          | `IUnityAdsShowListener.OnUnityAdsShowComplete(adUnitId, completionState)` | `interstitialAd.OnAdClosed`または`rewardedAd.OnAdDisplayFailed`                                                                                                           | インスタンスのイベントコールバック            |
| サポートされている            | `Advertisement.isSupported`                                               | サポートされていません                                                                                                                                                            | LevelPlay ではサポートされていません      |
| デバッグモード              | `Advertisement.debugMode = true`                                          | サポートされていません                                                                                                                                                            | LevelPlay ではサポートされていません      |
| パッケージバージョン           | `Advertisement.version`                                                   | `LevelPlay.PluginVersion`                                                                                                                                              |                              |
| 表示中                  | `Advertisement.isShowing`                                                 | サポートされていません                                                                                                                                                            | LevelPlay ではサポートされていません      |
