##概要 このガイドでは、Unity Ads を Unity ゲームに実装するためのインテグレーションについて説明します。
Unity の収益化プラットフォームは強力な収益ツールを提供します。ゲームで広告と同様にアプリ内課金を使用する場合、Unity の機械学習データモデルは最適化された収益化戦略のコンテンツタイプをシームレスに融合できます。Unity による収益の最適化の詳細は、Personalized Placements を参照してください。
このページでは、以下を説明します。
Build Settings ウィンドウ を使用して、サポートされているプラットフォームのプロジェクトを設定します。プラットフォームを iOS または Android に設定し、Switch Platform をクリックします。
Unity Ads の最新バージョンを使用するには、Asset Store から ダウンロード します。Monetization API には SDK 3.0 以降が必要です。アセットパッケージのダウンロードとインストールについては、アセットパッケージ を参照してください。
Placement は、収益化コンテンツを表示するゲーム内で呼び出されるイベントです。Operate タブから Placement を管理するには、プロジェクトを選択し、次に左のナビゲーションペインから Monetization > Placements を選択します。
ADD PLACEMENT ボタンをクリックして Placement 作成のプロンプトを表示します。Placement に名前を付け、タイプを選択します。
すべての Unity Ads 対応プロジェクトには、‘video
’ (報酬無し) と ‘rewardedVideo
’ (報酬あり) がデフォルトで配置されています。必要に応じてこれらを実装に使用したり、独自のものを作成してください。
SDK を初期化するには、適切なプラットフォームのプロジェクトのゲーム ID を参照する必要があります。ID を見つけるには、Developer Dashboard の Operate タブでプロジェクトを選択し、次に左のナビゲーションペインから Monetization > Platforms を選択します。
ゲームのスクリプトヘッダーに、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 を参照してください。
広告を視聴するプレイヤーに報酬を与えるには、基本的な実装のセクションで説明したのと同じ手順に従います。ただし、プレイヤーが広告を最後まで見るように、既成ロジックを使ったリワードコールバックメソッドを使用して広告を表示します。
報酬型広告は Rewarded タイプを使って表示する必要があります。すべての Unity Ads 対応プロジェクトには、デフォルトで rewardedVideo
タイプもあります。実装にはこれを使用してください。または、独自のものを作成 (ただし、Placement が Rewarded に設定されていることを確認してください)。
Show
関数は、SDK が ShowResult
enum を返すために使用するコールバックを受け取ります。この結果は、プレイヤーが広告を終了したか、スキップしたかを示します。この情報を使用して、各シナリオの処理のカスタム関数を作成します。例えば以下の通り。
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) {
// プレイヤーに報酬を与える
}
}
}
リワード広告は、通常、プレイヤーに広告の視聴を許可するかどうかのボタンを使用します。以下は、リワード広告ボタン (押すとコンテンツが可能な場合に広告を表示) の作成方法を説明しています。
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 スクリプトのヘッダーで、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);
}
}
ゲームをパブリッシュする前に、以下の手順でテストモードを有効にします。
Unity エディターで、再生ボタンをクリックしてプロジェクトを実行し、広告の実装をテストします。
注意 広告のインテグレーションをテストする前にテストモードを有効にする必要があります。誤って不正とフラグされるのを防ぐためです。
Unity Ads の実装ができました。Unity の目標は、収益を最大にすることを容易にすることです。それを念頭において、以下の手順を検討してください。
Monetization
Initialize
プロジェクトの SDK を初期化します。
public static void Initialize (string gameID, bool testMode)
gameId
パラメーターは、プロジェクトの Game ID で、Developer Dashboard で確認することができます。testMode
パラメーターは、ゲームがテストモードにあるかどうかを示します。testMode
が true
の場合、テスト広告のみが表示されます。testMode
が false
の場合、ライブの広告 (配信されている広告) が表示されます。不正行為の警告の表示を避けるためには、ゲームを開始する前にテストモードを使用することが重要です。
IsReady
PlacementContent
が指定された Placement に対して準備ができているかをチェックします。
public static boolean IsReady (string placementId);
placementId
パラメーターは Developer Dashboard で設定されたPlacement ID です。この関数は、 PlacementContent
が準備ができている場合は true
を返し、そうでない場合は false
を返します。
GetPlacementContent
指定した Placement の PlacementContent
オブジェクトを返します。
public static PlacementContent GetPlacementContent (string placementId);
placementId
パラメーターは Developer Dashboard で設定されたPlacement ID です。この関数は、 PlacementContent
が使用できる場合は PlacementContent
オブジェクトを返し、そうでない場合は null を返します。
注意 PlacementContent
を変数として設定するときは、正しいタイプ(ShowAdPlacementContent
か PromoAdPlacementContent
) にキャストする必要があります。詳細は、コンテンツタイプ を参照してください。
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
PlacementContent
イベントのリスナーを設定します。リスナーのパラメーターは、イベントコールバックのリスナーです。
public static void SetListener (IMonetizationListener listener);
GetListener
現在の Monetization リスナーを返します。リスナーオブジェクトは、イベントコールバックのリスナーです。
public static IMonetizationListener GetListener ();
PlacementContent
Placement が表示できる収益化コンテンツを表すオブジェクト。
RewardablePlacementContent
PlacementContent
クラスを拡張し、報酬可能なコンテンツの拡張を提供します。
ShowAdPlacementContent
RewardablePlacementContent
クラスを拡張し、ビデオ広告コンテンツの機能を提供します。
Show
PlacementContent
が ShowAdPlacementContent
としてキャストされている場合は、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
ShowAdPlacementContent
クラスを拡張し、IAP Promo コンテンツの機能を提供します。詳細については、Native Promo を参照してください。
Banner
Load
バナー広告コンテンツを読み込むための基本的な方法。必要に応じて、いくつかのパラメーターでこの関数を調整することができます。
メソッド | 説明 |
---|---|
public static void Load () |
デフォルトの Placement ID を持ち、コールバックを持たないバナー広告を読み込みます。 |
public static void Load (BannerLoadOptions options) |
バナー広告をデフォルトの Placement ID でロードします。ロードが成功すると loadCallback コールバックが発生し、ロードに失敗した場合は errorCallback コールバックが発生します。 |
public static void Load (string placementID) |
バナー広告を特定の Placement ID (コールバックなし) で読み込みます。 |
public static void Load (string placementID, BannerLoadOptions options) |
バナー広告を特定の Placemnet ID でロードします。 ロードが成功すると loadCallback コールバックが発生し、ロードが失敗した場合は errorCallback コールバックが発生します。 |
public static bool isLoaded () |
コンテンツが正常に読み込まれ、表示する準備ができているかどうかを確認します。 |
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 コールバックを発生させ、コンテンツが非表示のとき hideCallback コールバックを発生させます。 |
public static void Show (string placementID) |
バナー広告を特定の Placement ID (コールバックなし) で表示します。 |
public static void Show (string placementID, BannerLoadOptions options) |
特定の Placement ID を持つバナー広告を表示します。コンテンツが表示されているときに showCallback コールバックを発生させ、コンテンツが非表示のとき hideCallback コールバックを発生させます。 |
BannerOptions
これらのオプションを SDK に渡して、バナー内のイベントを通知します。
コールバック | 説明 |
---|---|
public BannerCallback showCallback { get; set; } |
このコールバックは、バナー広告がプレイヤーに表示されたときに発生します。 |
public BannerCallback hideCallback { get; set; } |
このコールバックは、バナー広告がプレイヤーから非表示になったときに発生します。 |
Hide
この関数を使用すると、バナー広告をすべて破棄する代わりに、非表示にすることができます。
public static void Hide (bool destroy = false);