Version: 2018.4
言語: 日本語
Unity Ads
Unity Analytics

Unity 開発者インテグレーション

概要

このガイドでは、Unity Ads を Unity ゲームに実装するためのインテグレーションについて説明します。

Unity の収益化プラットフォームは強力な収益ツールを提供します。ゲームで広告と同様にアプリ内課金を使用する場合、Unity の機械学習データモデルは最適化された収益化戦略のコンテンツタイプをシームレスに融合できます。Unity による収益の最適化の詳細は、Personalized Placements を参照してください。

このページでは、以下を説明します。

基本的な実装

プロジェクトの設定

ビルドターゲットの設定

Build Settings ウィンドウ を使用して、サポートされているプラットフォームのプロジェクトを設定します。プラットフォームを iOS または Android に設定し、Switch Platform をクリックします。

Unity エディターでビルドターゲットを設定
Unity エディターでビルドターゲットを設定

Unity Ads のインストール

Unity Ads の最新バージョンを使用するには、Asset Store から ダウンロード します。Monetization API には SDK 3.0 以降が必要です。アセットパッケージのダウンロードとインストールについては、アセットパッケージ を参照してください。

Placement の作成

Placement は、収益化コンテンツを表示するゲーム内で呼び出されるイベントです。Operate タブから Placement を管理するには、プロジェクトを選択し、次に左のナビゲーションペインから Monetization > Placements を選択します。

ADD PLACEMENT ボタンをクリックして Placement 作成のプロンプトを表示します。Placement に名前を付け、タイプを選択します。

  • 基本的な侵入型広告やプロモーションコンテンツを表示するには、Non-rewarded を選択します。無報酬のプレースメントを使用すると、プレイヤーは特定の時間が経過すると広告をスキップできます。
  • Rewarded を選択すると、プレイヤーがインセンティブと引き換えに広告を表示することにオプトイン (同意) できるようできます。Rewarded タイプでは、プレイヤーは広告をスキップできません。
  • 専用バナー広告の設定をするには、Banner を選択します。

すべての Unity Ads 対応プロジェクトには、‘video’ (報酬無し) と ‘rewardedVideo’ (報酬あり) がデフォルトで配置されています。必要に応じてこれらを実装に使用したり、独自のものを作成してください。

SDK の初期化

SDK を初期化するには、適切なプラットフォームのプロジェクトのゲーム ID を参照する必要があります。ID を見つけるには、Developer DashboardOperate タブでプロジェクトを選択し、次に左のナビゲーションペインから Monetization > Platforms を選択します。

Developer Dashboard でゲーム ID を見つける
Developer Dashboard でゲーム ID を見つける

ゲームのスクリプトヘッダーに、UnityEngine.Monetization 名前空間を加えます。ゲームのランタイムライフサイクルの早い段階で、できれば起動時に SDK を Initialize 関数を使って初期化します。例えば以下の通りです。

using UnityEngine.Monetization;

public class UnityAdsScript : MonoBehaviour { 

    string gameId = "1234567";
    bool testMode = true;

    void Start () {
        Monetization.Initialize (gameId, testMode);
    }
}

基本的広告 (報酬なし) の実装

PlacementContent は、Placement が表示できる収益化コンテンツを表すオブジェクトです (詳細は Content タイプ を参照してください)。コンテンツの準備をするときには、GetPlacementContent 関数を使用して検索し、コンテンツを表示するには Show 関数を使用します。例えば以下の通りです。

using UnityEngine.Monetization;

public class UnityAdsPlacement : MonoBehaviour {

    public string placementId = "video";

    public void ShowAd () {
        StartCoroutine (ShowAdWhenReady ());
    }

    private IEnumerator ShowAdWhenReady () {
        while (!Monetization.IsReady (placementId)) {
            yield return new WaitForSeconds(0.25f);
        }

        ShowAdPlacementContent ad = null;
        ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;

        if(ad != null) {
            ad.Show ();
        }
    }
}

この例では、コルーチンは IsReady 関数を使って、渡された Placement ID を確認して使用する PlacementContent をチェックします。コンテンツが利用可能な場合は、変数として格納され、Show 関数で実行されます。

リワード広告の実装

広告を見たプレイヤーに報酬を与えると、プレイヤーのエンゲージメントが増加し、より高い収益をえられます。例えば、プレイヤーに与えるゲームの報酬として、ゲーム内で使用できる通貨、消費アイテム、寿命の延長、経験値の増加、などがあります。リワード広告の効果的な作成方法の詳細は、Ads best practices を参照してください。

広告を視聴するプレイヤーに報酬を与えるには、基本的な実装のセクションで説明したのと同じ手順に従います。ただし、プレイヤーが広告を最後まで見るように、既成ロジックを使ったリワードコールバックメソッドを使用して広告を表示します。

Placement の選択

報酬型広告は Rewarded タイプを使って表示する必要があります。すべての Unity Ads 対応プロジェクトには、デフォルトで rewardedVideo タイプもあります。実装にはこれを使用してください。または、独自のものを作成 (ただし、Placement が Rewarded に設定されていることを確認してください)。

スクリプトにコールバックメソッドを追加する


using UnityEngine.Monetization;

public class RewardedAdsPlacement : MonoBehaviour {

public string placementId = "rewardedVideo";

public void ShowAd () {
    StartCoroutine (WaitForAd ());
}

IEnumerator WaitForAd () {
    while (!Monetization.IsReady (placementId)) {
        yield return null;
    }

    ShowAdPlacementContent ad = null;
    ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;

    if (ad != null) {
        ad.Show (AdFinished);
    }
}

void AdFinished (ShowResult result) {
    if (result == ShowResult.Finished) {
        // プレイヤーに報酬を与える
    }
}

} ```

リワード広告ボタンのコード例

リワード広告は、通常、プレイヤーに広告の視聴を許可するかどうかのボタンを使用します。以下は、リワード広告ボタン (押すとコンテンツが可能な場合に広告を表示) の作成方法を説明しています。

  1. Unity エディターで、Game Object > UI > Button の順に選択して、シーンにボタンを加えます。
  2. ボタンを選択した状態で、インスペクターで Add Component > New Script をクリックしてスクリプトコンポーネントを追加します。スクリプトに UnityAdsButton と名前をつけ、クラス名に一致させます。
  3. スクリプトを開き、以下のコード例を加えます。
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;

[RequireComponent (typeof (Button))]
public class UnityAdsButton : MonoBehaviour {

    public string placementId = "rewardedVideo";
    private Button adButton;

# if UNITY_IOS
   private string gameId = "1234567";
# elif UNITY_ANDROID
    private string gameId = "7654321";
# endif

    void Start () {
        adButton = GetComponent<Button> ();
        if (adButton) {
            adButton.onClick.AddListener (ShowAd);
        }

        if (Monetization.isSupported) {
            Monetization.Initialize (gameId, true);
        }
    }
  
    void Update () {
        if (adButton) {
            adButton.interactable = Monetization.IsReady (placementId);
        }
    }

    void ShowAd () {
        ShowAdCallbacks options = new ShowAdCallbacks ();
        options.finishCallback = HandleShowResult;
        ShowAdPlacementContent ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;
        ad.Show (options);
    }

    void HandleShowResult (ShowResult result) {
        if (result == ShowResult.Finished) {
            // プレイヤーに報酬を与える
        } else if (result == ShowResult.Skipped) {
            Debug.LogWarning ("The player skipped the video - DO NOT REWARD!");
        } else if (result == ShowResult.Failed) {
            Debug.LogError ("Video failed to show");
        }
    }
}

ノート この例では、ゲームの特定の場所で PlacementContent が表示可能かどうかを確認します。別の方法として、リスナーを実装して、コンテンツが利用可能なときに通知させることもできます。

バナー広告の実装

Placement の設定

バナー広告には、特定の種類の専用バナー広告が必要です。現在、バナーは画面の下部中央に固定されて表示されます。

ゲーム内のバナー広告の例
ゲーム内のバナー広告の例

スクリプトの実装

Placement スクリプトのヘッダーで、UnityEngine.Advertisement 名前空間を宣言します。これは Banner クラスです。次に、SDK を初期化し、Advertisement.Banner.Show() を使用してバナー広告を表示します。例えば以下の通り。

using System.Collections;
using UnityEngine;
using UnityEngine.Advertisements;

public class BannerAds : MonoBehaviour {

    public string bannerPlacement = "banner";
    public bool testMode = false;

# if UNITY_IOS
    public const string gameID = "1234567";
# elif UNITY_ANDROID
    public const string gameID = "1234568";
# elif UNITY_EDITOR
    public const string gameID = "1111111";
# endif

    void Start () {
        Advertisement.Initialize (gameID, testMode);
        StartCoroutine (ShowBannerWhenReady ());
    }

    IEnumerator ShowBannerWhenReady () {
        while (!Advertisement.IsReady ("banner")) {
            yield return new WaitForSeconds (0.5f);
        }
        Advertisement.Banner.Show (bannerPlacement);
    }
}

テスト

ゲームをパブリッシュする前に、以下の手順でテストモードを有効にします。

  1. Developer DashboardOperate タブからプロジェクトを選択します。
  2. 左のナビゲーションペインから Monetization > Platforms を選択します。
  3. 好みのプラットフォームを選択し、SETTINGS タブを選択します。
  4. 下にスクロールして TEST MODE セクションを表示し、オーバーライドクライアントテストモードを切り替えて、Force test mode ON ラジオボタンを選択します。

Unity エディターで、再生ボタンをクリックしてプロジェクトを実行し、広告の実装をテストします。

注意 広告のインテグレーションをテストする前にテストモードを有効にする必要があります。誤って不正とフラグされるのを防ぐためです。

収益の最適化

Unity Ads の実装ができました。Unity の目標は、収益を最大にすることを容易にすることです。それを念頭において、以下の手順を検討してください。

  • ゲームでアプリ内課金 (IAP) を使用していますか?
    • IAP を使用している場合は、IAP Promo を実装して、アプリ内課金を促進します。
    • そうでない場合は、Unity IAP を使ってアプリ内ストアを作成します。
  • 広告と IAP Promo の設定が完了したら、Personalized Placements を使用して広告と IAP 戦略をよりブラッシュアップし、すべてのゲームで収益の増加を図ります。
  • 効果的な広告の仕組みを設計するためのヒントは、ベストプラクティス ガイドを参照してください。

トップに戻る

Unity API リファレンス

Monetization

Initialize

プロジェクトの SDK を初期化します。

public static void Initialize (string gameID, bool testMode)

gameId パラメーターは、プロジェクトの Game ID で、Developer Dashboard で確認することができますtestMode パラメーターは、ゲームがテストモードにあるかどうかを示します。testModetrue の場合、テスト広告のみが表示されます。testModefalse の場合、ライブの広告 (配信されている広告) が表示されます。不正行為の警告の表示を避けるためには、ゲームを開始する前にテストモードを使用することが重要です。

IsReady


public static boolean IsReady (string placementId); ```


<a name="getplacementcontent"></a>
#### ```GetPlacementContent```
指定した Placement の ```PlacementContent``` オブジェクトを返します。

public static PlacementContent GetPlacementContent (string placementId); ```


**注意**  ```PlacementContent``` を変数として設定するときは、正しいタイプ([```ShowAdPlacementContent```](#showadplacementcontent) か [```PromoAdPlacementContent```](#promoadplacementcontent)) にキャストする必要があります。詳細は、[コンテンツタイプ](https://unityads.unity3d.com/help/monetization/content-types) を参照してください。

<a name="imonetizationlistener"></a>
### ```IMonetizationListener```
実装して SDK に渡すインターフェース。

public interface IMonetizationListener {
void OnPlacementContentReady (string placementId, PlacementContent placementContent);
void OnPlacementContentStateChange (string placementId, PlacementContent placementContent, Monetization.PlacementContentState previousState, Monetization.PlacementContentState newState); } ```

OnPlacementContentReady

Placement ID と PlacementContent オブジェクトを取り、どのように SDK が表示可能なコンテンツを処理するかを決定します。

OnPlacementContentStateChange

渡された PlacementContent の状態の変化をどのように SDK が処理するかを決定します。

SetListener


public static void SetListener (IMonetizationListener listener); ```

GetListener

現在の Monetization リスナーを返します。リスナーオブジェクトは、イベントコールバックのリスナーです。

public static IMonetizationListener GetListener ();

PlacementContent

Placement が表示できる収益化コンテンツを表すオブジェクト。

RewardablePlacementContent

PlacementContent クラスを拡張し、報酬可能なコンテンツの拡張を提供します。

ShowAdPlacementContent

RewardablePlacementContent クラスを拡張し、ビデオ広告コンテンツの機能を提供します。

Show


public void Show (ShowAdCallbacks showAdCallbacks)

public void Show (ShowAdFinishCallback finishCallback) ```

報酬付きの PlacementContent に対して、リスナーを使用して、コンテンツが完了し、希望する動作を処理するかどうかを確認します。

ShowAdCallbacks

広告が実行された後、 ShowResult enum は[[ShowOptions.resultCallback]]に渡されます。

説明
Finished プレイヤーが広告を見て完了したことを示します。
Skipped プレイヤーが広告の完了を許可しなかったことを示します。
Failed 広告が表示されなかったことを示します。
public delegate void ShowAdFinishCallback (ShowResult finishState);

public delegate void ShowAdStartCallback ();

public struct ShowAdCallbacks {
    public ShowAdFinishCallback finishCallback;
    public ShowAdStartCallback startCallback;
}

PromoAdPlacementContent


<a name="banner"></a>
### ```Banner```
<a name="load"></a>
#### ```Load```
バナー広告コンテンツを読み込むための基本的な方法。必要に応じて、いくつかのパラメーターでこの関数を調整することができます。

| メソッド  | 説明 |
| ------ | ----------- |
| ```public static void Load ()``` | デフォルトの Placement ID を持ち、コールバックを持たないバナー広告を読み込みます。 |
| ```public static void Load (BannerLoadOptions options)``` | バナー広告をデフォルトの Placement ID でロードします。ロードが成功すると [```loadCallback```](#bannerloadoptions) コールバックが発生し、ロードに失敗した場合は [```errorCallback```](#bannerloadoptions) コールバックが発生します。 |
| ```public static void Load (string placementID)``` | バナー広告を特定の Placement ID (コールバックなし) で読み込みます。 |
| ```public static void Load (string placementID, BannerLoadOptions options)``` | バナー広告を特定の Placemnet ID でロードします。 ロードが成功すると [```loadCallback```](#bannerloadoptions) コールバックが発生し、ロードが失敗した場合は [```errorCallback```](#bannerloadoptions) コールバックが発生します。 |
| ```public static bool isLoaded ()``` | コンテンツが正常に読み込まれ、表示する準備ができているかどうかを確認します。 |

<a name="bannerloadoptions"></a>
##### ```BannerLoadOptions```
バナーをロードするときに、これらのオプションを SDK に渡して、イベントを通知します。

| コールバック | 説明 |
| -------- | ----------- |
| ```public LoadCallback loadCallback { get; set; }```  | バナー広告が読み込まれ、表示可能なときに発生します。 |
| ```public ErrorCallback errorCallback { get; set; }``` | このコールバックは、バナー広告の読み込み処理中にエラーが発生したときに発生します。このコールバックが呼び出された場合は、バナーが読み込まれなかったものとみなします。 Load をもう一度呼び出すこともできます。 |

#### ```Show```
バナー広告コンテンツを読み込むための基本的な方法。必要に応じて、いくつかのパラメーターでこの関数を調整することができます。

| メソッド  | 説明 |
| ------ | ----------- |
| ```public static void Show ()``` | デフォルトの Placement ID を持ち、コールバックを持たないバナー広告を表示します。 |
| ```public static void Show (BannerOptions options)``` | デフォルトの Placement ID を持つバナー広告を表示します。コンテンツが表示されているときに [```showCallback```](#banneroptions) コールバックを発生させ、コンテンツが非表示のとき [```hideCallback```](#banneroptions) コールバックを発生させます。  |
| ```public static void Show (string placementID)``` | バナー広告を特定の Placement ID (コールバックなし) で表示します。 |
| ```public static void Show (string placementID, BannerLoadOptions options)``` | 特定の Placement ID を持つバナー広告を表示します。コンテンツが表示されているときに [```showCallback```](#banneroptions) コールバックを発生させ、コンテンツが非表示のとき [```hideCallback```](#banneroptions) コールバックを発生させます。 |

<a name="banneroptions"></a>
##### ```BannerOptions```
これらのオプションを SDK に渡して、バナー内のイベントを通知します。

| コールバック | 説明 |
| -------- | ----------- |
| ```public BannerCallback showCallback { get; set; }```  | このコールバックは、バナー広告がプレイヤーに表示されたときに発生します。 |
| ```public BannerCallback hideCallback { get; set; }``` | このコールバックは、バナー広告がプレイヤーから非表示になったときに発生します。 |

<a name="hide"></a>
#### ```Hide```
この関数を使用すると、バナー広告をすべて破棄する代わりに、非表示にすることができます。

public static void Hide (bool destroy = false); ```

トップに戻る


Unity Ads
Unity Analytics