廣告刊登位置

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

本指南將說明如何使用 Google 行動廣告 Unity 外掛程式##99; 的廣告刊登位置功能,為應用程式建立及顯示廣告。

必要條件

初始化 Google Mobile Ads SDK

載入廣告之前,請透過 Action<InitializationStatus> 回呼呼叫 MobileAds.Initialize() 來初始化 Mobile SDK。這項操作只需要執行一次,最好在應用程式啟動時執行。

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

建立廣告刊登位置

要顯示 Google 行動廣告和橫幅廣告,第一步就是建立和設定廣告刊登位置。您可以從 Unity 編輯器的素材資源 > Google 行動廣告 | 廣告刊登位置中,選取橫幅廣告、插頁式廣告或獎勵廣告格式的廣告刊登位置。接著,您就可以設定三個示範廣告刊登位置,並立即使用 。

如要新增刊登位置,請按一下清單底部的 [新增刊登位置] 按鈕。您可以在檢查器檢視畫面中設定廣告刊登位置。

廣告刊登位置設定

每個刊登位置具備以下屬性:

刊登位置名稱
刊登位置的名稱。用於在場景中設定廣告時識別刊登位置。
廣告格式
橫幅、獎勵、插頁式。廣告類型。
廣告單元 ID
請提供你的 Android 和 iOS 橫幅廣告單元 ID。您至少需要提供一個廣告單元 ID。
持續在各個情境中保留
勾選後,無論情境變更為何,橫幅都會在螢幕上保留 (與 DontDestroyOnLoad 相同)。
已啟用自動載入
勾選這個選項後,系統就會在載入與廣告刊登位置相關的場景時,自動載入廣告。

以下螢幕截圖顯示名為「My Awesome Banner」的廣告刊登位置範例。

將 AdGameObject 新增至場景

您可以使用 Unity 編輯器中的 GameObject > Google Mobile Ads,在橫幅廣告中加入橫幅廣告、插頁式廣告或獎勵廣告格式。選取格式,將刊登位置新增至有效情境。

將 AdGameObject 新增至場景後,您就會在 Unity 編輯器的階層檢視畫面中看到代表遊戲的 GameObject。

您可以變更 GameObject 本身的名稱來變更刊登位置名稱。以下螢幕截圖顯示名為「橫幅廣告」的 AdGameObject 範例。

AdGameObject 設定

您可以在「Ad Game Object (Script)」元件設定中,透過檢查器檢視畫面設定 AdGameObject。

廣告刊登位置

在下拉式清單中選取要放送廣告的刊登位置。這份清單只會列出正確格式的廣告單元。舉例來說,如果是橫幅廣告遊戲物件,下拉式選單只會顯示已設定的橫幅廣告刊登位置。

BannerAdGameObject 設定 (僅限橫幅)

  • 大小:選取要使用的橫幅廣告大小。
    • 錨定自動調整橫幅廣告提供了一些其他選項:
      • 方向 - 選取用來計算廣告高度的裝置方向。
      • 使用全螢幕寬度:如果勾選,橫幅會佔滿全螢幕寬度。如果您取消勾選「使用全螢幕寬度」選項,就可以調整螢幕寬度的百分比 (50~99%)。
    • 自訂可讓您提供橫幅寬度和高度。
  • 廣告排序 - 選取橫幅廣告應放在哪個位置。

回呼

您可以實作與廣告回呼對應的函式。舉例來說,如果您想處理橫幅廣告載入失敗時的處理方式,請按照下列步驟操作:

  1. 建立與廣告回呼相容的函式。

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. 將包含上述函式的指令碼附加到場景中的任何 GameObject。

  3. 按一下「+」按鈕,然後拖曳「&amp33;」複製指令碼的 GameObject。

  4. 選取您要連結至廣告回呼的函式。對於參數化的廣告回呼,請選取要接受動態變數的函式,以便從 SDK 取得參數值。

透過指令碼使用 AdGameObject

從指令碼取得 AdGameObject 執行個體

所有 AdGameObject 物件都提供便利的 LoadAd() 方法。這樣就能載入內含明確且未指定的 AdRequest 的廣告。若要套用指定目標,請使用自己的廣告請求提出 LoadAd(AdRequest adRequest)

如要取得 AdGameObject 的例項,請針對每個格式使用下列方法:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

傳回的 BannerAdGameObject 物件還包含便利方法 Hide()Show()

插頁式

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

傳回的 InterstitialAdGameObject 物件提供便利的 ShowIfLoaded() 方法。

已獲得獎勵

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

傳回的 RewardedAdGameObject 物件提供便利的 ShowIfLoaded() 方法。

例如,您可以取得 BannerAdGameObject 的執行個體,並依照以下方式載入:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

如果有名為 BannerAdBannerAdGameObject,您可以取得像這樣的執行個體:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

存取 AdGameObject 中的基礎廣告物件

下列程式碼片段說明如何存取與 AdGameObject 相關聯的基礎廣告物件。

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

插頁式

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

已獲得獎勵

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

示例

顯示插頁式廣告

以下舉例說明如何使用 AdGameObject 設定遊戲載入及顯示插頁式廣告。

InterstitialAdGameObject 新增至情境,並啟用 Auto Load enabled (自動載入) 功能,以便在情境載入時載入廣告。

接著,請確認您已使用下列方式初始化 SDK。請注意,如果您忘記初始化 SDK,AdGameObject 中的自動載入功能將無法運作。

然後呼叫 InterstitialAdGameObject.ShowIfLoaded() 函式,在畫面切換時顯示插頁式廣告。以下程式碼範例顯示在場景轉換之間顯示插頁式廣告的範例。

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

由於您已在廣告刊登位置中啟用自動載入功能,因此不需要明確請求廣告。當情境改變時,在準備好時就會顯示插頁式廣告。

如果您想手動請求廣告,請從廣告刊登位置檢查器停用「自動載入」功能,並呼叫 InterstitialAdGameObject.LoadAd() 函式。以下程式碼片段說明如何手動要求廣告。

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

處理「觀看獎勵廣告」按鈕狀態

以下舉例說明如何使用廣告刊登位置啟用「觀看獎勵廣告」按鈕。

新增 Button GameObject (在此範例中為「Button」),用於顯示獎勵廣告。我們只在有獎勵廣告可用時,才會顯示這個按鈕。

Start() 方法中,將按鈕的啟用狀態變更為 false。這項操作會讓按鈕從場景中消失。

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

RewardedAdGameObject 新增至場景,然後從下拉式選單中選取「AdMob 示範獎勵廣告」廣告刊登位置。

RewardedAdGameObject 檢查器的「Callback」部分中,按一下「On Ad Loaded()」中的「+」按鈕,以便在載入獎勵廣告時呼叫函式。

將您在上一個步驟新增的 Button GameObject 拖曳至「None (Object)」欄位。從下拉式選單中選取要呼叫的函式。按一下「No Function > GameObject > SetActive(bool)」,然後按一下核取方塊,以傳送 true 做為參數 (呼叫 SetActive(true))。

在「回呼」部分中,您也可以連結觸發 RewardedAd.OnUserEarnedReward 事件時呼叫的事件。詳情請參閱本節

接著,按下按鈕以顯示獎勵廣告。在按鈕檢查器的「On Click()」回呼部分中,按一下「+」按鈕,然後將「獎勵廣告刊登位置 GameObject」(在本例中為「獎勵廣告」) 拖曳到「無 (物件)」欄位。

接著,將 RewardedAdGameObject.ShowIfLoaded() 函式附加到按鈕的 On Click() 回呼中。

最後,別忘了初始化 SDK。以下程式碼片段是本範例中所用情境的完整程式碼:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

執行專案後,只要獎勵廣告處於載入狀態且可以顯示,畫面上就會顯示按鈕。

為 RewardedAdGameObject 設定獎勵回呼

以下範例說明如何將獎勵廣告回呼設為獎勵廣告刊登位置,方便您在呼叫回呼函式時提供獎勵。

建立新指令碼,並定義可接受 Reward 做為參數的函式,如下所示。

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

RewardedTestScript 指令碼附加至場景中的所有 GameObject (廣告刊登位置刊登位置物件除外)。在這個範例中,這個範例會附加至「Main Camera GameObject」。

RewardedAdGameObject 新增至場景。接著,在 RewardedAdGameObject 檢查器的「回呼」部分下方,按一下 使用者贏得獎勵 (獎勵) 上的+按鈕,即可啟用函式,以便在獲得獎勵時呼叫函式。

將您在上一個步驟中新增的主 Camera GameObject 拖曳至「None (Object)」欄位。從下拉式選單中選取要呼叫的函式。按一下 [No Function > RewardedTestScript > OnUserEarnedReward]

執行專案並觀看獎勵廣告後,當您要獲得與廣告互動的獎勵時,系統就會叫用 RewardedTestScript.OnUserEarnedReward()