廣告刊登位置

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

本指南將說明如何使用 Google 行動廣告 Unity 外掛程式的「廣告刊登位置」功能,為應用程式製作及顯示廣告。

必要條件

初始化 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 行動廣告 > 廣告刊登位置中,選擇橫幅廣告、插頁式廣告或獎勵廣告格式的廣告刊登位置。接著,您就可以設定三個示範 廣告刊登位置,並立即使用

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

廣告刊登位置設定

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

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

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

將 AdGameObject 新增至場景

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

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

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

AdGameObject 設定

您可以在 Ad Game Object (Script) 元件設定的「Inspector」(檢視畫面) 檢視畫面中,設定情境中的 AdGameObject。

廣告刊登位置

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

BannerAdGameObject 設定 (僅限橫幅廣告)

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

回呼

您可以實作與廣告回呼相對應的函式。舉例來說,如果您想處理橫幅廣告載入失敗時的處理方式:

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

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

  3. 按一下 + 按鈕,然後拖曳附加指令碼的 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() 方法中,將 Button 的有效狀態變更為 false。讓按鈕從場景中消失。

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

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

RewardedAdGameObject 檢查器的「回呼」部分下方,按一下「On Ad Loaded()」中的 [+] 按鈕,即可在載入獎勵廣告時呼叫函式。

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

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

接著,將按鈕設為在使用者點擊後顯示獎勵廣告。在按鈕檢查器的「On Click()」回呼區段中,按一下 [+] 按鈕,然後將獎勵廣告刊登位置 GameObject (此例中名為「獎勵廣告」) 拖曳至「None (Object)」欄位。

然後將 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 (Ad Placement PlacementObject 除外)。在這個範例中,這個範例會附加至「Main Camera GameObject」。

RewardedAdGameObject 新增至場景。接著,在 RewardedAdGameObject 檢查器的「回呼」區段下,按一下「使用者獲得獎勵 (獎勵)」上的 + 按鈕,即可在將獎勵提供給使用者時呼叫函式。

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

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